文字列パターンのループ変数を置き換える

文字列パターンのループ変数を置き換える

ファイル名の配列を繰り返し、絶対パス内のファイル名を変更しようとします。コードは、

#!/bin/bash
jsArray=(moment.js datatable.js jquery.js jquery.tmpl.js dt_jq_ui.js report_app.js)
for f in "/path/to/res/${jsArray[@]}.js";
do
  echo "$f"
done

帰ってきて、

/path/to/res/moment.js
datatable.js
jquery.js
jquery.tmpl.js
dt_jq_ui.js
report_app.js.js

最初の要素にのみ接頭辞があり、最後の要素にのみ接尾辞があるのはなぜですか?

こういう文を期待したところ、

/path/to/res/moment.js
/path/to/res/datatable.js
..................
/path/to/res/report_app.js  

ベストアンサー1

Bashに次のように言ったからです。

~$ echo "/path/to/res/${jsArray[@]}.js"
/path/to/res/moment.js datatable.js jquery.js jquery.tmpl.js dt_jq_ui.js report_app.js.js

長いロープを与えるだけです。やりたいことは次のとおりです。

~$ for f in "${jsArray[@]}.js"
     do echo "/path/to/res/$f"
   done
/path/to/res/moment.js
/path/to/res/datatable.js
/path/to/res/jquery.js
/path/to/res/jquery.tmpl.js
/path/to/res/dt_jq_ui.js
/path/to/res/report_app.js.js

おすすめ記事