ファイルの内容が空かどうかを判断するには、次のステートメントを使用します:
if test -z `cat filename`
ファイル名が空であるか、スペースのない文字列が 1 行だけある場合、それ以外の場合はすべて正常です。引数が多すぎます。次のようなエラーも報告されます: 二項演算子が必要です。
原因分析:
ファイル名内のスペースと改行は bash を混乱させます。
環境変数が二重引用符で囲まれていない場合、bash は条件に独立変数が多すぎると判断します。
文字列引数を二重引用符で囲むことで、この問題を解決できます。
すべての文字列引数を二重引用符で囲む習慣を身につければ、同様のプログラミング エラーの多くがなくなるようです。
解決策:
コマンドの実行部分に二重引用符を追加します:
if test -z "`cat filename`"
シェルの引数が多すぎる場合の解決策 2:
時々、今日小さな問題を解決しているときに奇妙な問題に遭遇しました。 "[[ ]] " の効果は次のように要約されます
コードを表示します: If [ -z ` lsof -i:22 ` ] // この書き方では引数が多すぎるため、 [[ - z ` に変更してください) lsof -i: 22`]]
then
echo "ポートが実行されていません"
else
echo "ポートが実行中"
Fi
この単純なシェル スクリプトを実行すると、常に多くの引数にレポートされ、最後により簡単に言うと、「[ ]」よりも「[[ ]]」の方が汎用性が高いことがわかりました。したがって、この問題を回避するには、「 [ 」を直接変更するだけです。 ]" と "[[ ]]"。さらに、「[[ ]]」は「[ ]」よりもフォールトトレラントです。つまり、「[ ]」で報告される可能性のあるエラーが、&&、|| などの「[[ ]]」構造では報告されない可能性があります。 、など。この種の論理的判断はこの記事の焦点ではないので、簡単に説明します
Linux bash の引数が多すぎる問題の解決策に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。 !