0
我有一個腳本遍歷一個文件並在另一個文件中查找匹配。一旦找到匹配項,我如何讓程序停止。在初始匹配bash腳本後退出一條IF語句
例如: 我在name.txt的第一行,然後嘗試在file.txt中爲它找到一個匹配項。
name.txt:
7,7,FRESH,98,135,
65,10,OLD,56,45,
file.txt的:
7,7,Dave,S
8,10,Frank,S
31,7,Gregg
45,5,Jake,S
腳本:
while read line
do
name_id=`echo $line | cut -f1,2 -d ','`
identiferOne=`echo $name_id | cut -f1 -d ','`
identiferTwo=`echo $name_id | cut -f2 -d ','`
while IFS= read line
do
CHECK=`echo $line | cut -f4 -d','`
if [ $CHECK = "S" ]
then
symbolName=`echo $line | cut -f3 -d ','`
numberOne=`echo $line | awk -F',' '{print $1}'`
numberTwo=`echo $line | cut -f2 -d ','`
if [ "$numberOne" == $identiferOne ] && [ "$numberTwo" == $identifierTwo ]
then
echo "WE HAVE A MATCH with $symbolName"
break
fi
fi
done < /tmp/file.txt
done < /tmp/name.txt
我的問題是 - 如何從通過文件迭代停止腳本。 txt一旦找到初始匹配,然後將匹配的記錄設置爲變量,停止if語句,然後執行一些操作使用該變量的循環內的其他內容。我嘗試使用break;
,但退出循環,這不是我想要的。
如果你不希望它退出循環,但你希望它停止加工生產線(這是正是循環所做的),這不是一個矛盾嗎?你想要達到什麼目標? – user3035772
@ user3035772我希望if語句在第一次成功匹配後停止。 – nrs90
這就是你現在所擁有的。我不明白這個問題。目前你的if語句應該說「我們有一個匹配」(我假設你將在那裏放置更多的代碼),然後'break'將導致它停止掃描'file.txt'來指定'name_id' ,然後從'name.txt'中取一個新的'name_id'。這聽起來像你要求的,你已經在你的代碼中,所以需要有什麼不同? – user3035772