2017-01-05 12 views
1

がここに私のスクリプトです:「引数が多すぎます」というエラー

if [ awk '$0 ~ /Failed/ { print }' $(pwd)/unity.log ]; then 
    echo "Build Failed" 
    exit 1 
else 
    echo "Build Success" 
    exit 0 
fi 

要旨は、私がメッセージと失敗した場合は1を終了する「失敗の構築」のためのファイルをチェックしていますということです。

私が理解していることが正しいとすれば、awkは、ファイルにテキストがない場合は空の文字列を、見つかった場合はテキストを返します。しかし、それは構文エラーを撮影:./Scripts/build.sh: line 41: [: too many arguments

答えて

4

grepを使用し、[]を削除します。

if grep -qw Failed unity.log; then 
    echo "Build Failed" 
    exit 1 
else 
    echo "Build Success" 
    exit 0 
fi 
+0

ありがとうございます!出来た! – YukiNyaa

+1

'$(pwd)'?真に、ファイルが現在の作業ディレクトリにある場合、完全なディレクトリ名を追加するポイントは何ですか? '$ PWD'はサブシェルを実行しないで同じ結果を返します。 – alvits

+0

@alvits - 私はそれを削除しました。それはOPのコードにあり、それがそこにいかにあるかです。 – codeforester

-2

ことは、これを試してみてください。

if [ ! "$(grep 'Build Failed' unity.log)" ]; then 
    exit 1 
fi 
+4

'[' ... ']'を使い、 'grep'の出力は無駄です。 if条件自体として 'grep'を使うだけです。 –

2

あなたも0にされ、デフォルトの終了値を利用することができ、があります何の理由もありません$(pwd)/filename;ちょうどfilenameをしてください。

grep -qw Failed unity.log || { echo "Build Failed"; exit 1; } 
echo "Build Success" 

echo >&2で)stderrに失敗した場合のエラーメッセージを送信するためにも、より慣用的だろう。

関連する問題