如何将文件中的路径名作为参数传递给 shell 脚本?

如何将文件中的路径名作为参数传递给 shell 脚本?

我有一个 file ~/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)

相关内容