shell的printf输出时包含空格问题

15 篇文章 0 订阅
1 篇文章 0 订阅

代码:

printf "%-30s:%-15s\n" report_selinux_enable $report_selinux_enable
printf "%-30s:%-15s\n" report_selinux_status $report_selinux_status
printf "%-30s:%-15s\n" report_os $report_os
printf "%-30s:%-15s\n" report_hostname $report_hostname
printf "%-30s:%-15s\n" report_kernel $report_kernel
printf "%-30s:%-15s\n" report_uptime $report_uptime
printf "%-30s:%-15s\n" report_date_time $report_date_time

输出:

report_selinux_enable         :disabled       
report_selinux_status         :Disabled       
report_os                     :GNU/Linux      
report_hostname               :centos.com     
report_kernel                 :3.10.0-693.2.2.el7.x86_64
report_uptime                 :42             
days                          :               
report_date_time              :2018-07-18-20-24-23

可以看出输出的在线天数(report_uptime)的值是42(本来是42 days),下面还有一行显示的有问题,把一行拆成了两行显示,是因为report_uptime的值中间有空格,所以被拆成两行

解决:printf语句后面的引用值要放在""中

printf "%-30s:%-15s\n" report_uptime "$report_uptime"

 

printf "%-30s:%-15s\n" "report_selinux_enable" "$report_selinux_enable"
printf "%-30s:%-15s\n" "report_selinux_status" "$report_selinux_status"
printf "%-30s:%-15s\n" "report_os" "$report_os"
printf "%-30s:%-15s\n" "report_hostname" "$report_hostname"
printf "%-30s:%-15s\n" "report_kernel" "$report_kernel"
printf "%-30s:%-15s\n" "report_uptime" "$report_uptime"
printf "%-30s:%-15s\n" "report_uptime" "$report_date_time"
report_selinux_enable         :disabled       
report_selinux_status         :Disabled       
report_os                     :GNU/Linux      
report_hostname               :centos.com     
report_kernel                 :3.10.0-693.2.2.el7.x86_64
report_uptime                 :42 days        
report_date_time              :2018-07-18-20-27-40

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: shell中的printf命令可以用来格式化输出,可以控制输出的格式、宽度、精度等。具体用法如下: 1. 基本用法 printf "格式字符串" 参数1 参数2 ... 其中,格式字符串中可以包含普通字符和格式控制符,格式控制符以%开头,后面跟着一个或多个字符,用来控制输出的格式。 2. 常用格式控制符 %d:输出整数 %f:输出浮点数 %s:输出字符串 %c:输出字符 %x:输出十六进制数 3. 控制输出的宽度和精度 可以使用数字来控制输出的宽度和精度,例如: printf "%5d\n" 123 # 输出宽度为5的整数,不足的地方用空格补齐 printf "%.2f\n" 3.1415926 # 输出精度为2的浮点数 4. 控制输出的对齐方式 可以使用-、、+等符号来控制输出的对齐方式,例如: printf "%-5d\n" 123 # 左对齐 printf "%05d\n" 123 # 右对齐,不足的地方用补齐 printf "%+d\n" 123 # 输出带符号的整数 以上就是shellprintf命令的格式化输出的基本用法和常用格式控制符,希望对你有所帮助。 ### 回答2: printf是一个用于格式化输出的函数,它以一定的格式打印字符串、数字和其他变量类型。在Shell中,printf函数可以使用多种格式来控制输出的方式。 printf的语法格式为: printf format-string [arguments...] 其中format-string就是输出格式,[arguments...]是传递给格式化字符串的参数,也就是需要输出的变量。 在format-string中,有多种格式说明符可以使用。其中常见的有: %s:字符串类型输出 %c:单个字符类型输出 %d:十进制整数类型输出 %f:浮点数类型输出 %b:二进制类型输出 %o:八进制类型输出 %x:十六进制类型输出 接下来是一些使用printf函数输出的例子: 1. 输出字符串类型 printf "%s\n" "Hello,World!" 注意:在输出字符串类型,需要使用双引号,否则会被解释为多个参数。 2. 输出整数类型 printf "The decimal number is: %d\n" 123 printf "The octal number is: %o\n" 123 printf "The hexadecimal number is: %x\n" 123 3. 输出浮点数类型 printf "The float number is: %f\n" 12.3 printf "The scientific notation of float number is: %e\n" 12.3 4. 输出二进制类型 printf "The binary number is: %b\n" 1101 注意:在输出二进制类型,需要使用printf的-e选项。 除了上述例子,还可以使用printf函数实现更为复杂的格式化输出。可以根据实际需要选择适当的格式说明符。 ### 回答3: printf是一个在 shell 脚本中可以用来格式化输出的内置命令。printf命令可以根据用户的定义格式打印出不同的输出,包括文本、数字和变量等内容。通过使用printf命令,用户可以更方便地控制输出的格式和排版,使输出的结果更加直观。 printf可以根据所给定的格式将一个或多个变量的值进行格式化后输出。格式标识符由一个百分号(%)和一个字母组成,这个字母表示输出的类型。有以下几种常用的格式标识符: %d:按照整数方式输出变量的值。例如:%d\n 会将变量的值按照整数格式输出,并在末尾加一个制表符。 %f:按照浮点数方式输出变量的值。例如:%f\n 会将变量的值按照浮点数格式输出,并在末尾加一个制表符。 %s:以字符串方式输出变量的值。例如:%s\n 会将变量的值按照字符串格式输出,并在末尾加一个制表符。 %c:以字符方式输出变量的值。例如:%c\n 会将变量的值按照字符格式输出,并在末尾加一个制表符。 %%:输出一个百分号。例如:%%\n 会输出一个百分号,并在末尾加一个制表符。 在使用printf命令,可以在字符串中穿插使用格式标识符,来控制输出的格式和排版。例如: printf "Hello, %s!\n" "World" # 输出:Hello, World! (%s表示输出字符串) printf "%d + %d = %d\n" 5 6 $((5+6)) # 输出:5 + 6 = 11 (%d表示输出整数) printf "%.2f\n" 3.1415926 # 输出:3.14 (%.2f表示输出浮点数,并保留两位小数) printf "%05d\n" 42 # 输出:00042 (%05d表示输出整数,并在左边补零) 除了上述常用格式标识符以外,printf还支持其他一些格式标识符,如%e(以指数形式输出浮点数)、%x(以十六进制形式输出整数)等等。在需要格式化输出候,可以根据自己的需要选择相应的格式标识符进行使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值