有条件的 grep 管道问题

有条件的 grep 管道问题

我是一个bash正在尝试学习脚本的菜鸟,但我不知道如何解决这个问题:

./elleviemme.sh: line 7: unexpected token `|', conditional binary operator expected
./elleviemme.sh: line 7: syntax error near `|'
./elleviemme.sh: line 7: `if [[ lsblk | grep -qwEo ^$dvin ]]' 

答案1

我假设您正在尝试使用 shell 变量的值dvin作为扩展正则表达式,并希望检查它是否与命令输出的任何行的开头匹配lsblk

为此,不要使用[[ ... ]]

if lsblk | grep -q -E -w "^$dvin"; then
   # whatever code here
fi

另请注意,这-q意味着“安静”,即没有输出,并且使用-q意味着您不需要-o(“仅匹配”)与grep.

[[ ... ]]当您想检查某些实用程序的退出状态时,您不会使用。在这里,您想要检查lsblk+grep管道如何退出,这将告诉您是否grep找到匹配项。

相关内容