1

この回答は正常に機能しますが、次のコードが2つのファイルの存在を検出しない理由を理解したいですか?

if [[ $(test -e ./file1 && test -e ./file2) ]]; then
  echo "yep"
else
  echo "nope"
fi

これをシェルから直接実行すると、期待どおりに動作します。

test -e ./file1 && test -e ./file2 && echo yes
4

2 に答える 2

7

の出力test -e ./file1 && test -e ./file2は空の文字列であり、[[ ]]ゼロ以外の終了コードが生成されます。あなたがしたい

if [[ -e ./file1 && -e ./file2 ]]; then
    echo "yep"
else
    echo "nope"
fi

[[ ... ]][ ... ]orの代わりでtest ...あり、ラッパーではありません。

于 2013-05-21T16:19:51.040 に答える