printf打印格式字符串,解释'%'指令和'\'转义。
1.转义
\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"helloworkerhave 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
2.左右 对齐
$ 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
3. 回车 和 换行
实例,对比“n.sh”、“r.sh”的倒数第三行执行效果有何差异,脚本分别如下:
$ cat n.sh#!/bin/bash#declare -i k=0#until falsedoecho -n '-'sleep 0.01echo -e -n '\b\'sleep 0.01echo -e -n '\b-'sleep 0.01echo -e -n '\b/'sleep 0.01echo -e -n '\b*'let k=k+1if [ $k -eq 55 ]thenk=0printf "\n"fidone$ cat r.sh#!/bin/bash#declare -i k=0echo -n '-------------------------------------------------------'printf "\r"#until falsedoecho -n '-'sleep 0.05echo -e -n '\b\'sleep 0.05echo -e -n '\b-'sleep 0.05echo -e -n '\b/'sleep 0.05echo -e -n '\b*'sleep 0.3echo -e -n '\b-'let k=k+1if [ $k -eq 55 ]thenk=0printf "\r"fidone
执行脚本“n.sh”,看看“\n”的效果:
$ ./n.sh*******************************************************************************************************************************\^C
打印的会一行一行显示出来。
执行脚本“r.sh”,看看“\r”的效果:
$ ./r.sh-------*-----------------------------------------------
就是一直在短横线上从左往右、一遍一遍打印“翻跟头”的星号。
实例:
#!/bin/bashname="matentgfei"age="22"dis_ () {cat <<EOFname: $nameage: $ageEOF}dis_
输出:
[view@file ~]$ ./cat.shname: matentgfeiage: 22