1.語法
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/bash name="matentgfei" age="22" dis_ () { cat <<EOF name: $name age: $age EOF } dis_
輸出展示:
[view@file ~]$ ./cat.sh name: matentgfei age: 22