执行此命令会给出预期的输出 - “c d”作为单个参数处理:
% /bin/sh -c 'args="$@"; for a in "$@"; do echo $a; done' -- a b "c d"
a
b
c d
如果相同的参数存储在文件中并由cat
传递给脚本,我得到了不需要的输出 - “c d”被处理为2个参数:
% echo a b \"c d\" > foo
% cat foo
a b "c d"
% /bin/sh -c 'args="$@"; for a in "$@"; do echo $a; done' -- `cat foo`
a
b
"c
d"
有没有办法让因为命令执行而传递的参数被处理,因为它是作为字符串传递的?
韩国社交协会