파일의 경로 이름을 매개변수로 쉘 스크립트에 전달하는 방법은 무엇입니까?

파일의 경로 이름을 매개변수로 쉘 스크립트에 전달하는 방법은 무엇입니까?

~/filelist각 줄이 공백을 포함할 수 있는 파일의 경로 이름인 파일이 있습니다 .

/path/to/my file1
/another path/to/my file2

파일 이름을 인수로 받아들이는 스크립트가 있습니다.

myscript.sh "/path/to/my file1"  "/another path/to/my file2"

그러나 다음 명령은 작동하지 않습니다

myscript.sh $(cat ~/filelist)

그리고

arr=($(cat ~/filelist))
myscript.sh "${arr[@]}"

스크립트를 어떻게 작동하게 만들 수 있나요 ~/filelist? 감사해요.

답변1

일반적인 단어 분할 이유는 다음에 설명되어 있습니다.

Bash의 특정 사례에서는 mapfile토큰화를 직접 건드릴 필요가 없으므로 제공되는 배열을 사용하는 것이 가장 깔끔합니다.

$ mapfile -t paths < filelist
$ myscript.sh "${paths[@]}"

또는 원하는 경우 분사를 직접 사용할 수 있습니다.

$ set -o noglob     # disable globbing, same as 'set -f'
$ IFS=$'\n'         # split only on newlines
$ myscript $(cat filelist)

관련 정보