微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux shell printf 格式化输出 数字 字符串

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"
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

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 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

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐