假设我有以下shell程序。
#!/bin/sh
FOO="foo"
echo $FOO | cat
我想生成另一个shell程序,它和这个程序做同样的事情,只是所有的shell变量都被替换了。例如,
#!/bin/sh
echo "foo" | cat
我知道,如果我使用#!/bin/sh -x
运行上面的程序,我可以接近,但输出不会保留重定向。相反,我得到
+ FOO=foo
+ echo foo
+ cat
foo
有什么想法吗?
以下shell:
$ cat eval.sh
echo "#!/bin/sh"
FOO="foo"
echo "echo $FOO | cat"
将编写一个shell:
$ sh eval.sh
#!/bin/sh
echo foo | cat
它能满足你的需求。