Bash スクリプトで ls の代わりにファイル グロビングを使用するためのヒントが与えられました。私のコードでは、指示に従い、次のように置き換えましarray=($(ls))
た。
function list_files() { for f in *; do [[ -e $f ]] || continue done }
array=($(list_files))
ただし、新しい関数は何も返しません。ここで何か間違っていますか?
Bash スクリプトで ls の代わりにファイル グロビングを使用するためのヒントが与えられました。私のコードでは、指示に従い、次のように置き換えましarray=($(ls))
た。
function list_files() { for f in *; do [[ -e $f ]] || continue done }
array=($(list_files))
ただし、新しい関数は何も返しません。ここで何か間違っていますか?
これを書くだけです:
array=(*)
「list_files」が何も出力しないことは別として、アプローチにはまだ他の問題があります。
引用符で囲まれていないコマンド置換 (あなたの場合は "$(list_files)") は、引き続き "単語分割" と "パス名展開" (bash(1) "EXPANSION" を参照) の対象となります。これは、"list_files" にスペースがある場合を意味します。出力を配列要素に分割するために使用されます。パターン文字がある場合は、現在のディレクトリ ファイル名を個別の配列要素として照合して置換するために使用されます。
OTOH、コマンド置換を二重引用符で引用すると、出力全体が単一の配列要素と見なされます。