UNIX KSH - ワイルドカードを含む文字列を変数に割り当てるときに二重引用符があるか、引用符がありませんか?

UNIX KSH - ワイルドカードを含む文字列を変数に割り当てるときに二重引用符があるか、引用符がありませんか?

私はUNIXに初めてアクセスし、現在のファイルabc_123_date.zip名になるようにシェルスクリプトを作成していますabc_123_12312005。その文字列を変数に保存してから、コマンドabc_123_*.zipでハードコーディングする代わりに使用する予定です。たとえば、findif [ -f ... ]

file_name=abc_123_*.zip

その後、残りのコードでは、$file_nameその文字列を必要とするすべての操作の代わりに実際の文字列を使用できます。

この文字列を保存する最良の方法は何ですか?

Option 1: file_name=abc_123_*.zip

Option 2: file_name="abc_123_*.zip"

どちらが良い選択ですか?なぜ?

ありがとうございます!

答え1

ファイル名ワイルドカードに関する限り、ファイル名ワイルドカードはシェルにとって重要ではないため、優先度の問題です。引用符があるかどうかにかかわらず、通常の(配列ではない)割り当てではファイル名の拡張とトークン化は行われません。

他の多くの状況でも引用符が必要ですが、値にスペースやシェル演算子(など)が;含まれている場合は、割り当て(にも引用符が必要です。>したがって、一部の人はどこでも同じカスタマイズを使用するためにここでも使用したいと思うかもしれません。

また見なさい:いつ二重引用符が必要ですか?

関連情報