在 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
   [..]

相关内容