我有这个例子:
[nir]$ cat a.cfg
--arg1 $(./get.sh variable)
[nir]$ cat get.sh
echo "${1}-info"
[nir]$ cat a.sh
arg=$(cat a.cfg)
echo "$arg"
[nir]$ ./a.sh
--arg1 $(./get.sh variable)
我想要a.sh
返回--arg variable-info
。最终结果是使用echo
一个真正的命令来切换a.cfg
、解析它并将其作为参数发送。
答案1
你可以有a.sh
:
eval '
arg=$(cat << EOF
'"$(cat a.cfg)"'
EOF
)'
printf '%s\n' "$arg"
它告诉 shell 评估这个 shell 代码:
arg=$(cat << EOF
--arg1 $(./get.sh variable)
EOF
)
并且$(...)
将被扩展,因为它位于带有不带引号的分隔符的此处文档中。