有没有一种方法可以在保留重定向的同时打印插入的shell命令



假设我有以下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

它能满足你的需求。

最新更新