Shell

如何比較ksh中的字元串

  • October 25, 2016

我想檢查作業的結果並在FAILED.

首先:我在我的應用程序日誌文件中 grep 行的最後一個單詞(對於最近處理的文件 ( $processedfilename)):

check1=$(grep "$processedfilename" "$logfile" | grep "anotherword" | \
   grep "FAILED" | tail -1 | awk '{print $NF}')

這導致[FAILED].

現在我想檢查結果

if [ $check1 -eq "[[FAILED]" ] 
then

或者

if [ $check1 -eq "\[FAILED]" ] 
then

總是有算術語法錯誤

檢查的正確語法是[FAILED]什麼?

你應該總是雙引號變數。你需要=字元串等於。所以:

if [ "$check1" = "[FAILED]" ]; then

您正在通過使用-eq導致錯誤進行算術比較,您需要通過使用=(或==內部[[)進行字元串比較,為此使用引號就足夠了:

[ "$check1" = "[[FAILED]" ]
[[ "$check1" = "[[FAILED]" ]]

引用自:https://unix.stackexchange.com/questions/318809