簡體   English   中英

bash中字符串的串聯

[英]Concatenation of strings in bash

我在嘗試從WordPress自述文件解析版本號時遇到以下bash腳本問題。

cat readme.txt | {
    while read -r a b c d; do
    if [ ${a} == "Stable" ]  && [ ${b} == "tag:" ]; then
        VERSION="$c"
    fi
done
out="Updated to version $VERSION thanks"
echo $out
}

我期望的輸出是

Updated to version 1.15 thanks

但實際輸出是

 thanks to version 1.15

就像“謝謝”代替了字符串的開頭,而不是附加到末尾。 有什么線索嗎?

readme.txt和/或您的腳本具有DOS行尾; VERSION的值具有尾隨回車符,這會影響輸出。

如果將輸出傳遞給cat -A ,則可能會發現$VERSION包含回車符。

您可以使用tr擺脫CR:

$ echo $'foo\rb'
boo
$ echo $'foo\rb' | tr -d '\r'
foob

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM