运行变量后将文件中的文本作为参数传递

运行变量后将文件中的文本作为参数传递

我有这个例子:

[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
)

并且$(...)将被扩展,因为它位于带有不带引号的分隔符的此处文档中。

相关内容