shell printf 用法

本文深入探讨了bash中printf命令的用法,包括如何替代echo实现更灵活的输出格式,并展示了如何使用printf进行数值格式化、换行、插入特殊字符等操作。此外,还介绍了如何在bash脚本中模拟C语言的sprintf函数,以及如何通过printf创建自定义错误消息输出。文章旨在帮助开发者掌握bash中printf的高效应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


$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认字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值