Shell-Script

在循環中的所有錯誤之後使腳本失敗

  • May 16, 2021

我使用了條件 if-else,以防萬一 $? -ne 0 但我在其中執行循環。我想要的是我的腳本在所有檢查完成後失敗。僅在一次檢查後就失敗了。下面是我的腳本

for i in `cat xyz.txt`
do
grep $i abc.txt
   if [[ $? -ne 0 ]]; then
   echo $i "is missing in the file abc.txt"
   exit -1
   fi
done

設置循環後失敗的提醒:

#!/bin/sh

fail=false
while IFS= read -r pattern; do
   if ! grep -e "$pattern" abc.txt; then
       fail=true
   fi
done <xyz.txt

"$fail" && exit 1

xyz.txt這會逐行讀取模式並依次應用於每個模式grepabc.txt如果模式不匹配,則將變數fail設置為字元串truefalse從一開始就)。

在循環之後,$fail用作命令並exit 1執行以非零退出狀態終止腳本,具體取決於failistruefalse.

grep命令的輸出被寫入標準輸出,我假設您想要,否則在找到一個不匹配的模式後測試所有模式是沒有意義的。

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