次の行のコードは機能していません。ディレクトリを反復処理していません。
input={20132802,20132802}
for i in $(ls -1 /home/$input/*s.log)
do
...
done
しかし、ループで入力を提供するとうまくいきます。
for i in $(ls -1 /home/{20132802,20132802}/*s.log)
do
...
done
助けてください。
ブレース展開は、他の展開の前に実行されるため、変数では使用できません。からman bash
:
ブレース展開は他の展開よりも前に実行され、他の展開に特有の文字は結果に保持されます。それは厳密にテキストです。Bash は、展開のコンテキストまたは中括弧内のテキストに構文解釈を適用しません。パラメーター展開との競合を避けるため、文字列 '${' はブレース展開の対象とは見なされません。
eval
ただし、この制限を克服するために使用できます。
input={20132802,20132802}
for i in $(eval ls -1 /home/$input/*s.log)
do
...
done
必読:eval
悪です
i は for ループのインデックスであり、$input ('$i'input) を記述するときに $i が使用されると思われるため、$input の代わりに ${input} を記述してみてください。