我在BASH脚本中有以下printf语句,可以很好地显示我的脚本输出:
printf "%-20s %-25s %-5s %-10s %-20s \n" $hostn $kernl $uptim $owner $team
此输出如下:
Hostname1 2.6.32.12-0.7-default 307 Lastname, Firstname
Team1
Hostname2 2.6.32.12-0.7-default 270 Lastname, Firstname
Team1
Hostname3 2.6.32.12-0.7-default 298 Lastname, Firstname
Team1
Hostname4 2.6.32.12-0.7-default 271 Lastname, Firstname
Team2
我不确定为什么要将这个团队添加到新线路中。我尝试添加另一个字段,但它做同样的事情:
printf "%-20s %-25s %-5s %-10s %-20s %s\n" $hostn $kernl $uptim $owner $team "test"
Hostname1 2.6.32.12-0.7-default 307 Lastname, Firstname Team1
test
Hostname2 2.6.32.12-0.7-default 270 Lastname, Firstname Team1
test
Hostname3 2.6.32.12-0.7-default 298 Lastname, Firstname Team1
test
Hostname4 2.6.32.12-0.7-default 271 Lastname, Firstname Team2
test
这些换行符来自哪里?我的printf格式不正确吗?
答案 0 :(得分:3)
在编写shell脚本时,总是引用你的扩展(所有这些,除非你有其他特定的理由!)
printf "%-20s %-25s %-5s %-10s %-20s %s\n" \
"$hostn" "$kernl" "$uptim" "$owner" "$team" "test"
由于您的$owner
可以包含空格,如果您没有正确引用,则姓氏可能会移到$team
字段中,否则test
会显示为另一个%-20s
字段用于下一行的$hostn
。