Shell-Script
在循環中的所有錯誤之後使腳本失敗
我使用了條件 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
這會逐行讀取模式並依次應用於每個模式grep
。abc.txt
如果模式不匹配,則將變數fail
設置為字元串true
(false
從一開始就)。在循環之後,
$fail
用作命令並exit 1
執行以非零退出狀態終止腳本,具體取決於fail
istrue
或false
.該
grep
命令的輸出被寫入標準輸出,我假設您想要,否則在找到一個不匹配的模式後測試所有模式是沒有意義的。