我经常想编辑由此产生的文件find
或fd
像这样:
fd myfile | my_script
在我的脚本中,vim
将使用 STDIN 中的所有文件作为参数运行,例如vim "myfile1" "myfile2"
.这些参数需要单独用双引号引起来,因为它们可能包含空格和其他特殊字符。
我尝试过以下方法:
files=""
while IFS=$'\n' read -r line; do
files="$files $line"
done
file $files
该示例应file
使用结果文件名作为参数运行。这有点有效,除了文件名中的空格会破坏它,并且我尝试以多种方式引用变量但没有成功。
如何使用以换行符分隔的输入作为带有空格的参数来运行命令?
答案1
正如您已经使用的那样bash
,请使用数组。
files=()
while IFS=$'\n' read -r line; do
files+=( "$line" )
done
file "${files[@]}"
您还可以查看xargs
,使用换行符分隔符,行为应该类似。