Bashスクリプトスニペット
folder="some folder's name"
a="$folder/"*".pdf"
if [ "$a" != "$folder"'/*.pdf' ]
then
echo check
fi
印刷しないでくださいcheck
。
名前がフォルダーで終わるcheck
ファイルが1つ以上ある場合にのみ印刷したいと思います。.pdf
$folder
echo $a
そして、echo "$folder"'/*.pdf'
印刷する予定の内容を正確に印刷します。*.pdf
指定されたフォルダにファイルが1つ以上ある場合、前者は一致するパスを印刷し、それ以外の場合は後者が印刷する内容を印刷します。後者は常に関連付けられている指定された古い名前を印刷します/*.pdf
。
- Bashはなぜこのように動作しますか?
- どのように機能させますか?
答え1
式は"$folder/"*".pdf"
すべての可能なものに拡張されます.pdf
。
なぜですか?これ*
ロゴは特別な意味を保ちます。ワイルドカード。
この文字列は、"$folder"'/*.pdf'
2つの別々の文字列"$folder"
を連結したものにすぎません'/*.pdf'
。
〜のように*
一重引用符で囲まれた記号 - it失うその特別な意味。
主な目標に基づいて.pdf
現在のフォルダに1つ以上のファイルがあることを確認してください。そして、いくつかの"pdf file found!"
成功したフレーズを印刷してみてください。
if [ ! -z `find foldername -type f -name "*.pdf" -print -quit` ]; then
echo "pdf file found!"
fi
答え2
二重引用符で囲まれた内容は(比較)を含む文字列なので、あなたのif
ステートメントは機能しません。二重引用符を削除すると、複数のファイルが一致すると文が失敗します。$a
*
echo "$a"
echo $a
if
don_crisstiのリンクには素晴らしい解決策があります。