파일 이름 배열을 반복하고 절대 경로 내의 파일 이름을 바꾸려고 합니다. 코드는,
#!/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
답변2
이것이 당신이 제공하는 루프이기 때문입니다.
$ jsArray=(moment.js datatable.js jquery.js jquery.tmpl.js dt_jq_ui.js report_app.js)
$ 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
또는 더 간단한 예를 들면 다음과 같습니다.
$ arr=(a b c );
$ for f in "foo ${arr[@]} bar"; do echo "$f"; done
foo a
b
c bar
문자열, 배열 및 다른 문자열이 제공됩니다. 쉘이 모든 요소에 문자열을 추가하는 이유는 무엇입니까? 인쇄 중이에요,,, string
말씀하신 대로요.array
string
각 요소에 접두사와 접미사를 추가하려면 다음을 수행하십시오.
$ for f in "${jsArray[@]}";
do
echo "/path/to/res/$f.js"
done
/path/to/res/moment.js.js
/path/to/res/datatable.js.js
/path/to/res/jquery.js.js
/path/to/res/jquery.tmpl.js.js
/path/to/res/dt_jq_ui.js.js
/path/to/res/report_app.js.js