2010-06-18 83 views

回答

3

在bash中,printf是内置的,因此不会调用外部程序。下的格式控制

$ help printf 
printf: printf [-v var] format [arguments] 

printf的格式和打印参数。 FORMAT 是一个字符串,它包含三种类型的对象:平纹 字符,其简单地复制到标准输出,字符 逸出 序列被转换和复制到标准输出,和 格式规范,其中的每一个使打印下一个 连续 的说法。除标准printf(1)格式外,%b表示 至 在相应参数中展开反斜杠转义序列,而%q 表示以可作为shell输入重用的方式引用参数。 如果提供了-v选项,则输出将置于 shell变量VAR的值中,而不是发送到标准输出。

3
echo -en \\x2Dn 
+0

不,我正在寻找一种方法来打印变量的值。 (改进问题) – 2010-06-18 14:28:11

0

当然,正确的和更简单的方法是使用printf,但这个工程:

$ Q='-n' 
$ echo -ne '\0'"$Q" 

但如果你有,你想从字面上打印反斜杠序列失败:

$ Q='-n\nX' 
$ echo -ne '\0'"$Q" 
-n 
X 

什么时候想要的是“-n \ nX”。在这种情况下,这个工程:

$ echo -n $'\0'"$Q" 
-n\nX$     # (no newline, so prompt follows on the same line) 

,但它不是确实为Q='-n'

如果我们想打印文字字符串printf怎么办?

$ Q='-n\nX' 
$ printf "$Q" 
-bash: printf: -n: invalid option 
$ printf -- "$Q" 
-n 
X 
$ printf "%s" "$Q" 
-n\nX$     # (no newline, so prompt follows on the same line)