0
我不知道爲什麼這段代碼停止工作 我測試了它幾次,它運行得很好 我試圖做的事聽到的是第一和第二在2點不同的陣列 ,然後比較參數$ 2 ==>在陣列內翻,如果它是在數組中,我不想將它存儲在文本文件$文件保存在數組中,並將參數與bash中的數組進行比較
comment=$2
dueD=$3
x=0
hasData()
{
declare -a varA varB
cat $file | while IFS=$'\t' read -r num first second;do
varA+=("$first")
varB+=("$second")
done
if [[ ${varA[@]} == ~$comment ]]; then
echo "already in the Todo list"
else
x=$(cat $file | wc -l)
x=$(($x+1))
echo -e "$x\t$comment\t$dueD" >> $file
fi
我覺得我是$評論將錯誤值存儲在陣列中,因爲當我嘗試時
echo ${varA[@]}
沒有獲取印刷 多了,我認爲我的if語句是不夠準確的,因爲這是第四次我編輯它和它的作品,但一段時間後它不再起作用 需要幫助,懇請
你的管道創建一個子shell。因此,對'varA'和'varB'的賦值發生在子shell中,並在子shell退出時立即丟失。有關如何在沒有子shell的情況下執行此操作,請參閱http://mywiki.wooledge.org/BashFAQ/001。 –
也是你的[[''比較奇怪,可能不是你真正想要的。右邊的'~'可能是字面的(你的意思是'=〜'用於正則表達式比較)?另外,您正在匹配'varA'的所有內容,這意味着您可能會在*條目之間匹配*(即一個條目的結尾和另一個條目的開頭)。如果你想搜索數組中的條目,你需要循環和單獨比較或使用關聯數組(bash 4+)。或者,不要完全讀取該文件,並使用'grep'或類似命令檢查匹配項。 –
@EtanReisner感謝您的指導,但是如果您可以告訴我,鏈接上的什麼解釋了子殼以及如何恢復它們,因爲我找不到它 – Hazo