Linux
grep + 僅當值在行尾時才匹配值
請告知我的程式碼有什麼問題,(我在 OS linux 和 solaris 上執行此程式碼)
我沒有得到這條線:
"file ended with .tmp"
例子:
我需要驗證 $FILE 是否以**.tmp或.old**等結尾…
帶有以下範例的程式碼設置參數:FILE=hosts.tmp
所以我希望 grep 將匹配**“.tmp** ”,因為**.tmp**是最後一個字元
- 與“,TEMP”或“previos”或“-OLD”等其他令牌相同
程式碼(ksh 腳本)
TOKENS=".tmp .old .previous -log temp ,TEMP -OLD previos" FILE=hosts.tmp for TOKEN in ` echo $TOKENS ` do [[ ` echo $FILE | grep -c '$TOKEN$' ` -eq 1 ]] && echo "file ended with $TOKEN" done
您的程式碼有兩個問題:
1)當TOKEN被傳遞給grep時,你需要
-
像這樣逃避:TOKENS=".tmp .old .previous \-log temp ,TEMP"
2)您正在使用單引號,這意味著變數沒有被擴展,用引號替換:
[[ ` echo $FILE | grep -c "$TOKEN$" ` -eq 1 ]] && echo file ended with $TOKEN