我編寫了一個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