繁体   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