特定のコンテンツが特定のファイル/フォルダに見つからないことを確認し、「失敗」を印刷するスクリプトを作成しようとしました。それ以外の場合は、「成功」を印刷する必要があります。ただし、次のスクリプトではいくつかのエラーが発生します。
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つの一致が見つかるとすぐに終了し、出力を抑制して最適化します。