![テストファイルは1つのファイルでのみ機能します。 2つのファイルで動作させるにはどうすればよいですか? [コピー]](https://linux33.com/image/103906/%E3%83%86%E3%82%B9%E3%83%88%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AF1%E3%81%A4%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A7%E3%81%AE%E3%81%BF%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%202%E3%81%A4%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A7%E5%8B%95%E4%BD%9C%E3%81%95%E3%81%9B%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
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