$*
相当于$1 $2 $3...
- 在所有空格上拆分。
"$*"
相当于"$1 $2 $3..."
- 这里没有分裂。
"$@"
等效于"$1" "$2" "$3"...
- split on arguments(每个参数都单独引用)。
如何引用$(command)
以便它以与"$@"
处理参数相同的方式处理命令的输出行?
我要解决的问题:
我有一个备份功能,它通过参数获取文件并备份每个文件(例如:)backup file1 file_2 "file 3"
。我想快速备份另一个命令返回的文件。
mycmd
返回三个文件(每行一个):file1、file_2和file 3(包含一个空格)。如果我运行以下命令:
备份 $(mycmd)
它相当于运行,并且由于不存在文件file和3backup file1 file_2 file 3
会导致错误。但是以这种方式运行它:
备份“$(mycmd)”
相当于运行:
备份“文件1 文件_2 文件 3"
他们都不够好。
如何使用命令替换来获得等效于:的调用backup "file1" "file_2" "file 3"
?
目前我唯一的解决方法是:
而读线;备份“$line”;完成<<(mycmd)