コマンドを[]/[[]]で囲まないでください)

コマンドを[]/[[]]で囲まないでください)

ただシェルを学び、vscodeとシェルチェックを使ってsystaxをチェックします。私がやっていることの例は次のとおりです。特定のテキストファイルに文字列があるかどうかを確認したいと思います。

#!/usr/bin/bash
Echo "Enter user"
if [ $grep -q binhqq "text.txt"] ; then
  echo "Found"
fi

ところでなぜこんな警告が表示されるのか警告してくれましたね。Don't wrap commands in []/[[]])本当にありがとうございます。

ベストアンサー1

スクリプトにはいくつかの基本的な問題があります。

  • Echo代わりに使用echo

  • $grep代わりに使用してくださいgrep$変数を逆参照するためにここでは必要ありません。

  • ユーザーに話しますが、Enter user実際に入力内容を読みません。

シェルチェック警告:

SC1072: Expected test to end here (don't wrap commands in []/[[]]). Fix any mentioned problems and try again.

grep -q binhqq "text.txt"内部が有効なEXPRではなくtest(参照help test)、次を使用して変更できるために発生します。コマンドの置き換え:

if [ -n "$(grep binhqq text.txt)" ] ; then

(出力がgrep空でないことをテスト)または[完全に取り外します]

if grep -q binhqq "text.txt" ; then

(終了状態によって異なりますgrep

おすすめ記事