Bash

有條件的 grep 管道問題

  • July 7, 2022

我是一個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 ]]' 

我假設您正在嘗試將 shell 變數的值dvin用作擴展正則表達式,並希望檢查它是否在 command 的任何輸出行的開頭匹配lsblk

為此,請勿使用[[ ... ]]

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

另外,請注意,這-q意味著“安靜”,即沒有輸出,而 using-q意味著您不需要-o(“僅匹配”) with grep

[[ ... ]]當您想檢查某些實用程序的退出狀態時,您不會使用。在這裡,您要檢查您的lsblk+grep管道是如何退出的,它將告訴您是否grep找到匹配項。

引用自:https://unix.stackexchange.com/questions/709002