私は間違った言葉を使用した可能性がありますので、修正してください。私が持っているとしましょう:
lst=(`ls $1`)
echo $lst #this gives the first element of the list
しかし、私がこれをしようとすると:
lst=$(ls $1)
echo $lst #this gives me all the files under argument directory
答え1
まず、$1
(最初のパラメータ)はなぜここにありますか?第二に、変数の内容ではなくecho lst
としてのみ作成してください。lst
あなたはそれをしたくなければなりませんecho $lst
。
括弧で囲まれた割り当ては、次の使用時に最初のbash(1)
要素として評価されるインデックスなしで配列を作成します。
lst=(1 2 3)
echo $lst # prints 1
echo ${lst[0]} # prints 1
echo ${lst[1]} # prints 2
echo ${lst[*]} # prints 1 2 3
答え2
最初の例
lst=(`ls $1`)
同じだろう
lst=( $(ls $1 ) )
そして両方ともbashで動作するようです。
答え3
バッシュから。
最初の例lst=(
ls $ 1は、)
var lstに値の配列を生成します。
このコードは次のように表示されます。
lst=(`ls .`); printf '%s\n' "${lst[@]}"
2番目の例はlst=$(ls $1)
実行されますが、ls $1
出力(1つの長い文字列で連結されている)だけがvarに割り当てられますlst
。
おそらくあなたが比較したいものは次のとおりです。
lst=( `ls $1`)
lst=($(ls $1))
そして実際に`...`
は同じです$(...)
。
どちらのコマンドも値の配列を生成します。lst