将带有引号,命令替换和变量的代码写入文件

时间:2015-03-29 12:42:47

标签: bash

我希望我的bash脚本将代码写入文件:

echo "mycode" > script.sh

我的问题是我的代码非常大,包含许多变量,引号和命令替换。

我希望解释所有变量和命令替换,引号保持不变,然后写入文件。

知道怎么做吗?

2 个答案:

答案 0 :(得分:2)

您可以使用heredocs执行此操作,但引用可能会变得棘手。

以下是一个示例(称为t.sh):

#! /bin/bash

foo=bar

cat > q.sh <<EOS
echo $foo
echo "$foo"
echo "\$foo"
echo '$foo'
echo '\$foo'
bob=$(echo $0)
alice=\$(echo $0)
EOS

生成的脚本包含:

echo bar
echo "bar"
echo "$foo"
echo 'bar'
echo '$foo'
bob=./t.sh
alice=$(echo ./t.sh)

答案 1 :(得分:1)

最快的方式是:

#!/bin/bash
cat > test.out << \EOF
Hello $WORLD.
EOF

输出将是:

Hello $WORLD.

这样,您就不需要单独转义每个'$'字符。