Shell格式化输出数字、字符串(printf)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 '-'
sleep0.01
echo -e -n '\b\'
sleep0.01
echo -e -n '\b-'
sleep0.01
echo -e -n '\b/'
sleep0.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
printf怎么输出字符echo -n '-'
sleep0.05
echo -e -n '\b\'
sleep0.05
echo -e -n '\b-'
sleep0.05
echo -e -n '\b/'
sleep0.05
echo -e -n '\b*'
sleep0.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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论