テストファイルは1つのファイルでのみ機能します。 2つのファイルで動作させるにはどうすればよいですか? [コピー]

テストファイルは1つのファイルでのみ機能します。 2つのファイルで動作させるにはどうすればよいですか? [コピー]

xyz.PDFファイルがある場合は動作します。

[ -e *.PDF* ] && echo 'yes'

ただし、次の2つのファイルがある場合

xyz.PDF
abc.PDF

わかりました。

$ [ -e *.PDF* ] && echo 'yes'
-bash: [: sometstgg.PDF: binary operator expected

この問題を解決し、1つ以上のファイルを許可するにはどうすればよいですか?

答え1

set -- *.PDF

[ "$#" -gt 0 ] && [ "$*" != "*.PDF" ] && echo 'yes'

おそらくより良い解決策があるでしょう。*.PDF実際の名前のエントリがあると失敗するからです。

bashそれだけで十分だと思うから

shopt -s nullglob
set -- *.PDF

[[ "$#" -gt 0 ]] && echo yes

ではksh93これで十分に見えます:

[ -e *.PDF ] && echo yes

関連情報