在 Shell 腳本中使用 grep 和 if 語句

在 Shell 腳本中使用 grep 和 if 語句

我想搜尋文件中的字串,經過多次搜尋網站,我最終使用了grepin 和if語句。然而,儘管我遵循了在其他相關帖子中找到的所有說明,但事情並沒有按照我的預期進行。這是我的程式碼。

echo "Enter dicounter number"
read string1
echo "Enter side with LEDs"
read string2

if grep -q "dicounter_$string1_from_$string2" MasterFile.txt; then
   echo "dicounter_$string1_from$string2 already exists in MasterFile."
else
   { (a bunch of stuff to make the transmitter operate) }
fi

我認為主要的問題是我在命令列參數中閱讀的方式。

答案1

如果腳本沒有按您期望的方式運作,您可能想要嘗試的第一件事就是set -x在程式碼中的麻煩點之前新增(在本例中為 之前grep),然後執行腳本。然後你會看到腳本是什麼實際上做,這樣你就可以將其與你所做的進行比較預計它正在做。

在您的情況下,問題可能是_變數名稱中的有效字符,因此您嘗試使用 value of$string1_from_而不是$string1您期望的那樣。這就是為什麼即使不使用花哨的操作,將變數名稱括在花括號中也是一個很好的做法。例如:

if grep -q "dicounter_${string1}_from_${string2}" MasterFile.txt; then
   echo "dicounter_${string1}_from${string2} already exists in MasterFile."
else
   [..]

相關內容