linux|Shell 格式化输出数字、字符串(printf)

1.语法

【linux|Shell 格式化输出数字、字符串(printf)】printf打印格式字符串,解释'%'指令和'\'转义。

1.1.转义

printf使用时需要指定输出格式,输出后不换行。
printf FORMAT [ARGUMENT]
printf OPTION
格式控制
\a :报警声
\f :换页
\n :新行
\r :回车
\t :横tab
\v :竖tab

\NNN :一个8进制数,打印ascii字符
\xHH :一个16进制数,打印ascii字符
\uHHHH :4位16进制数,表示的unicode字符(utf-16)
\UHHHHHHHH :8位16进制数,表示的unicode字符(utf-32)

-v :输出到变量
-:左对其
转义字符,小实例:
# \f 换页 $ printf "hello\fworker\fhave a good day.\n" hello worker have a good day. # # \NNN $ printf "\141\101\n" aA # \xHHH $ printf "\x61\x41\n" aA # \uHHHH $ printf "\u535a\u000d\u000a\u5ba2\n" 博 客 $ printf "\u535a\u5ba2\n" 博客 # \UHHHHHHHH $ printf "\U0000535a\U00005ba2\n" 博客 $ printf "\U535a\U5ba2\n" 博客 # unicode 兼容 ascii $ printf "\u61\u41\n" aA $ printf "\U61\U41\n" aA


1.左右“对齐”
$ printf "|%-7s||%7s||%s|\n" Hello world "my love." |Hello||world||my love.| $ printf "%s/%s\n" `pwd` `ls -1 csv-cron*` /home/cloudil/for_sunny/csv-crontab.sh $ printf "%s%s\n" `pwd` `ls -1 csv-cron*` /home/cloudil/for_sunnycsv-crontab.sh


2.“回车”和“换行”
实例,对比“n.sh”、“r.sh”的倒数第三行执行效果有何差异,脚本分别如下:
$ cat n.sh #!/bin/bash # declare -i k=0 # until false do echo -n '-' sleep 0.01 echo -e -n '\b\' sleep 0.01 echo -e -n '\b-' sleep 0.01 echo -e -n '\b/' sleep 0.01 echo -e -n '\b*'let k=k+1 if [ $k -eq 55 ] then k=0 printf "\n" fi done $ cat r.sh #!/bin/bash # declare -i k=0 echo -n '-------------------------------------------------------' printf "\r" # until false do echo -n '-' sleep 0.05 echo -e -n '\b\' sleep 0.05 echo -e -n '\b-' sleep 0.05 echo -e -n '\b/' sleep 0.05 echo -e -n '\b*' sleep 0.3 echo -e -n '\b-'let k=k+1 if [ $k -eq 55 ] then k=0 printf "\r" fi done


执行脚本“n.sh”,看看“\n”的效果:
$ ./n.sh ******************************************************* ******************************************************* *****************\^C

打印的会一行一行显示出来。

执行脚本“r.sh”,看看“\r”的效果:
$ ./r.sh -------*-----------------------------------------------

就是一直在短横线上从左往右、一遍一遍打印“翻跟头”的星号。



例子:

#!/bin/bashname="matentgfei" age="22"dis_ () { cat <

输出展示:
[view@file ~]$ ./cat.sh name: matentgfei age: 22

    推荐阅读