我想打印这个字符串:
.asciz "%d\n"
进入文件。 当我现在尝试它说:
.asciz "0\n"
似乎它将%d解释为0。
现在我写echo ".asciz "\""%d\\\n"\""
答案 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
)。