shell脚本之printf用法

一、简介

shell脚本中的printf和C语言中的printf用法基本一致,只是在写法上有些许区别

二、基本用法

1.打印字符串

[root@algento-1 ~]# cat printf_test.sh 
#!/bin/bash

printf "hello world"


[root@algento-1 ~]# sh printf_test.sh 
hello world[root@algento-1 ~]# 

这里发现printf默认是不带换行符号的,所以要换行需要带上\n

[root@algento-1 ~]# cat printf_test.sh 
#!/bin/bash

printf "hello world\n"

[root@algento-1 ~]# sh printf_test.sh 
hello world

2.打印内容中带有变量

多个变量参数之间用空格隔开

[root@algento-1 ~]# cat printf_test.sh 
#!/bin/bash
age=10
name=zhangsan
printf "%s的年龄是:%d岁\n" $name $age

执行结果:
[root@algento-1 ~]# sh printf_test.sh 
zhangsan的年龄是:10
变量类型printf对应的字符
字符串%s
数字%d

当然在shell中没有数据类型要求没有这么严格,数字也可以用%s来接。

三、格式化输出

1.%s 显示指定宽度

语法:
printf "%字符串的显示宽度s" 变量
例子:
这是执行的默认结果
[root@algento-1 ~]# printf "#%s#\n" hello
#hello#

字符串总长度显示为6个字符,不够6个字符自动用空格补充。
hello(5个字符) + 1个空格 = 6个字符

[root@algento-1 ~]# printf "#%6s#\n" hello
# hello#

hello(5个字符) + 5个空格 = 10个字符

[root@algento-1 ~]# printf "#%10s#\n" hello
#     hello#

2.%s对齐方式

我们发现在上边的例子中显示方式空格在左边,字符在右边。因为%s在显示宽度的时候默认是右对齐。因为老外的习惯就是这样。如果想要左对齐语法如下:

printf "%-宽度值s"

例子:

[root@algento-1 ~]# printf "#%-10s#\n" hello
#hello     #

3.综合实例

[root@algento-1 ~]# cat printf_test.sh 
#!/bin/bash

username=($(head -10 /etc/passwd |awk -F: '{print $1}'))
user_num=${#username[@]}
uid=($(head -10 /etc/passwd |awk -F: '{print $3}'))


for ((i = 0; i < $user_num; i++));do
	printf "%s%d\n" ${username[$i]} ${uid[$i]}

done

执行结果:每一个用户名后边都紧跟着uid
[root@algento-1 ~]# sh printf_test.sh 
root0
bin1
daemon2
adm3
lp4
sync5
shutdown6
halt7
mail8
operator11

更改此行代码:

    printf "%-10s%d\n" ${username[$i]} ${uid[$i]}

对齐之后

[root@algento-1 ~]# sh printf_test.sh 
root      0
bin       1
daemon    2
adm       3
lp        4
sync      5
shutdown  6
halt      7
mail      8
operator  11

  • 7
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值