打印" \ n"使用bash进入文件

时间:2016-10-17 14:55:18

标签: bash escaping special-characters

我想打印这个字符串:

.asciz "%d\n"

进入文件。 当我现在尝试它说:

.asciz "0\n"

似乎它将%d解释为0。

现在我写echo ".asciz "\""%d\\\n"\""

1 个答案:

答案 0 :(得分:1)

在现代GNU / Linux系统中,在单引号字符串中没有任何内容被解释,您可以简单地运行以下内容:

echo '.asciz "%d\n"' > file

其中的单引号应该被转义,但是:

echo '13'\'''
# outputs 13'

但是there are exceptions。例如,如果您将echo '1\n2'放入some-script.sh文件并使用修改后的BASHOPTS环境变量调用它,则该命令可以用换行符替换\n

$ env BASHOPTS=xpg_echo bash some-script.sh
1
2

因此,严格地说,echo是不安全的。或者,您可以调用printf

printf '%s' '.asciz "%d\n"'

或内置版本:

builtin printf '%s' '.asciz "%d\n"'

(见info bash printf)。