# list=(`echo ".*"`)
# for item in ${list[@]}; do echo "$item"; done;
.
..
.DS_Store
.git
.gitignore
.tox
.toxrc
上記のコードでは、bashの配列に文字列を書き込もうとしていますが、そうすると、 " .*
. *"は現在のディレクトリにあるファイル/ディレクトリの完全なリストに変換されます。 Bashがこれを行うのをどのように防ぐことができますか?
ベストアンサー1
list=(`echo ".*"`)
上記ではコマンド置換に引用符がないため、生成された出力には単語の区切りとワイルドカードが適用されます。
for item in ${list[@]}; do echo "$item"; done;
${list[@]}
また、ここには引用符がないので再び、これは単語分割とワイルドカードの影響を受けます。 (作業に引用符を追加するか、一致するファイル名にスペースまたはワイルドカードが含まれている場合は重要です...)
リテラル文字列だけが必要な場合は、andを.*
使用してください。コマンド置換を使用するには、周囲に引用符を入れます(例:)。list=(".*")
for item in "${list[@]}"; ...
"$(somecmd)"
また見なさい: