在不使用 ' ' 或 " " 的情况下使用 echo 命令或其他命令附加到文件的方法

Way to append to file with echo command or other command without using ' ' or " "

我正在尝试复制整个脚本,而不是脚本输出,而是将整个脚本作为文本行复制到名为 test.sh 的文件中。我正在使用另一个脚本来执行此操作,所以这就是我没有使用像 vi 这样的文本编辑器的原因。

我不能使用 echo "" 或 echo '',因为脚本字符串中包含双引号和单引号。

我用过但失败的是:

echo "rm disktemp;./xpinfo -i|awk '{print }'|grep rhdisk|sed 's!/dev/r!!'>disktemp;for i in $(cat disktemp);do ./xpinfo -i|grep $i|sed 's!/dev/r!!'|awk '{print ","'};done" > test.sh

有什么办法吗?

扩展引用

$'' $""

echo $'rm disktemp;./xpinfo -i|awk \'{print }\'|grep rhdisk|sed \'s!/dev/r!!\'>disktemp;for i in $(cat disktemp);do ./xpinfo -i|grep $i|sed \'s!/dev/r!!\'|awk \'{print ","\'};done'

输出:

rm disktemp;./xpinfo -i|awk '{print }'|grep rhdisk|sed 's!/dev/r!!'>disktemp;for i in $(cat disktemp);do ./xpinfo -i|grep $i|sed 's!/dev/r!!'|awk '{print ","'};done

不幸的是,您需要使用 \ 转义每个引号以将它们保留在输出中。最好全部转义,但正如您在下面看到的那样,仅用于 $'' 或 $"":

的就足够了
echo $'This is a text \'single\' and "double" quote in it.'
This is a text 'single' and "double" quote in it.

echo $"This is a text 'single' and \"double\" quote in it."
This is a text 'single' and "double" quote in it.

echo $'This is a text \'single\' and \"double\" quote in it.'
This is a text 'single' and "double" quote in it.

我认为上面的答案涵盖了你想做的事情,但我对你的要求还是有点困惑。如果你想添加到脚本中的代码是静态的(看起来是这样),你能不能不把它写到一个文件中,然后做:

cat common-code > test.sh

在你的脚本中?