我编写了一个shell脚本来使用grep
解析某个文件,并在后续命令中使用结果。shell脚本变量中的奇怪行为
源代码的相关部分是
VERSION=`grep "^Stable tag:" readme.md | awk -F' ' '{print $NF}'`
echo $VERSION
echo "Readme file version is $VERSION is it correct"
在readme.md文件相关线上
Stable tag: 2.2.2
您所期望的输出
2.2.2
Readme file version is 2.2.2 is it correct
但我得到以下作为输出
2.2.2
is it correctrsion is 2.2.2
我很确定在我的文本文件的行尾没有(不可打印或非ascii)字符。我通过在vim中启用:set invlist
命令来检查它。
任何想法为什么它会发生这样的事情?或者任何其他想法来调试这个问题?
您可以单独使用awk而不使用grep:'awk -F'''/ ^稳定标记:/ {print $ NF}'readme.md' – aragaer
@aragaer谢谢。不知道我可以这样使用'awk'。现在我还必须包含'tr'(请参见下面的答案),你认为我仍然可以单独使用'awk'吗? – Sudar
'人awk',我在那里看到'sub'。可能像'awk -F'''/^Stable tag:/ {sub(“\ r”,“”,$ NF); print $ NF}'readme.md',尽管我已经在那个时候考虑过sed了。 – aragaer