shell printf 用法


$printf "The first program always prints '%s,%s!'\n" Hello world为什么!'出错?
%s!是无法识别的
可以写成
$printf "The first program always prints '%s,%s' \n" Hello world!

printf某些情况可以替代echo.

1 #!/bin/bash
2 # printf 示例
3
4 PI=3.14159265358979
5 DecimalConstant=31373
6 Message1="Greetings,"
7 Message2="Earthling."
8
9 echo
10
11 printf "Pi to 2 decimal places = %1.2f" $PI
12 echo
13 printf "Pi to 9 decimal places = %1.9f" $PI # 都能够正确的结束.
14
15 printf "\n" # 打印一个换行,
16 # 等价于 'echo' . . .
17
18 printf "Constant = \t%d\n" $DecimalConstant # 插入一个 tab (\t).
19
20 printf "%s %s \n" $Message1 $Message2
21
22 echo
23
24 # ==========================================#
25 # 模拟C函数, sprintf().
26 # 使用一个格式化的字符串来加载一个变量.
27
28 echo
29
30 Pi12=$(printf "%1.12f" $PI)
31 echo "Pi to 12 decimal places = $Pi12"
32
33 Msg=`printf "%s %s \n" $Message1 $Message2`
34 echo $Msg; echo $Msg
35
36 # 像我们所看到的一样, 现在'sprintf'可以
37 #+ 作为一个可被加载的模块,
38 #+ 但是不具可移植性.
39
40 exit 0

使用printf的最主要的应用就是格式化错误消息.

1 E_BADDIR=65
2
3 var=nonexistent_directory
4
5 error()
6 {
7 printf "$@" >&2
8 # 格式化传递进来的位置参数, 并把它们送到stderr.
9 echo
10 exit $E_BADDIR
11 }
12
13 cd $var || error $"Can't cd to %s." "$var"
14
15 # 感谢, S.C.

arthur@aguo-laptop:~> printf "%s \n" $var
变量不可以如此输出,因为printf命令的ARGUMENT认字符串。

猜你喜欢

转载自blog.csdn.net/cfycyf/article/details/47657577
今日推荐