1
我知道這必須是簡單的,但我只是沒有看到它。我們有一個文件SpeakerList.txt
,它包含我們數據庫中的一系列揚聲器。 new.trs
包含數據庫的空格分隔版本。我需要驗證是否在數據庫中找到了揚聲器,因此我爲以發言人名稱開頭的行運行grep
。以下代碼總是在每個揚聲器的結尾觸發時產生if
語句。我有一個類似的代碼檢查文件的存在,它工作得很好。我錯過了什麼?我知道我的grep
循環正在運行 - 我用調試echo
行嘗試過。我也嘗試打印$speakerFound
字段,並且在最後確認它確實是空白的,即使我有一個聲明表明它早些時候標記爲「找到」。Bash - 國旗是不是設置爲找到文件的證據
for i in `cat SpeakerList.txt`
do
speakerFound=""
echo "Speaker: $i"
grep "^$i" ~/work/new.trs | while read line
do
fileName=`echo $line | cut -d' ' -f 2`
speakerFound="found"
break
done
if [ "$speakerFound" == "" ]; then
echo "$i not found in database."
fi
done
或者將支票移入函數並使用'return'來設置退出代碼,然後您可以檢查。 –
我假設OP需要的不僅僅是一個結果代碼......但是如果是這樣的話,你不需要將支票移動到一個函數中;你可以顯式地在子shell中運行循環(通過'(...)'),並且只需調用'exit'。 –
larsks
這確實做到了。我更改了代碼以創建並刪除發現揚聲器的虛擬文件。我猜另一個人工作,因爲它是在一個'while'循環內查看grep輸出。謝謝。 –