ifを使用するとエラーを引き起こす特殊文字を含む複数のステートメント

ifを使用するとエラーを引き起こす特殊文字を含む複数のステートメント

特定のコンテンツが特定のファイル/フォルダに見つからないことを確認し、「失敗」を印刷するスクリプトを作成しようとしました。それ以外の場合は、「成功」を印刷する必要があります。ただし、次のスクリプトではいくつかのエラーが発生します。

if [[ ( ! grep '/example.com' /opt/nfs &>/dev/null ) || ( ! grep -R '/example.com' /data &>/dev/null) ]]
then
echo "Failed"
else
echo "Passed"
fi

誰かがエラーが発生する理由とエラーを取り除き、予想される出力を取得する方法があるかどうかを教えてください。

更新:次のエラーが発生します。

s.sh: line 1: conditional binary operator expected
s.sh: line 1: expected `)'
s.sh: line 1: syntax error near `'/example.com''
s.sh: line 1: `if [[ ( ! grep '/example.com' /opt/nfs &>/dev/null ) || ( ! grep -R '/example.com' /data &>/dev/null) ]]'

ベストアンサー1

[[...]]比較やその他のタイプのテストを実行するために使用される構成。ksh構文解析は特殊な構文規則に従い、標準コマンドを置き換えるコマンドです[(通常の単純なコマンド解析を使用)。

ここでは何も役に立ちません。テストするのは、コマンドが成功したかどうか(grepまたはコマンドではありません)なので、次のようになります。grep[[...]][

if grep -qF /example.com /opt/nfs || grep -RqF /example.com /data
then echo passed
else echo failed
fi

-qすべての一致を検索しようとする代わりに、1つの一致が見つかるとすぐに終了し、出力を抑制して最適化します。

おすすめ記事