我是靠谱客的博主 淡定山水,最近开发中收集的这篇文章主要介绍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 "hellofworkerfhave a good day.n"
hello
     worker
           have a good day.
#
# NNN
$ printf "141101n"
aA
# xHHH
$ printf "x61x41n"
aA
# uHHHH
$ printf "u535au000du000au5ba2n"
博
客
$ printf "u535au5ba2n"
博客
# UHHHHHHHH
$ printf "U0000535aU00005ba2n"
博客
$ printf "U535aU5ba2n"
博客
# unicode 兼容 ascii
$ printf "u61u41n"
aA
$ printf "U61U41n"
aA


1.左右“对齐”

$ printf "|%-7s||%7s||%s|n" Hello world "my love." 
|Hello  ||  world||my love.|
$ printf "%s/%sn" `pwd` `ls -1 csv-cron*`
/home/cloudil/for_sunny/csv-crontab.sh
$ printf "%s%sn" `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


转载于:https://blog.51cto.com/sunnybay/1546176

最后

以上就是淡定山水为你收集整理的Shell 格式化输出数字、字符串(printf)的全部内容,希望文章能够帮你解决Shell 格式化输出数字、字符串(printf)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部