shell编程 之 echo命令和printf命令

1 echo命令基本情况:

    echo显示普通字符:echo "i am studying shell"(有木有引号都可以)

    支持转义字符:echo "\"hello\""(结果是”hello“)。

    显示变量:echo "$name is my arguement", 注意read name 是一个特殊用法,相当于raw_input(), 当脚本文件中内容如下时候:

        #!/bin/bash

        read name #表示从脚本外获得name参数的内容

       echo "$name is my arguement "    #脚本外运行的时候,会要求先输入,再输出,我输入的是:hehe,得到hehe is my arguement.

    特殊转义,比如\n换行,需要echo 加参数-e,echo -e " hello \n" (这样才有效),同理\c不换行,也是这样才有效 echo -e "hello \c"

    显示结果定向至文件:echo " hello " >t2.sh(事先如果没有t2.sh,系统会新建一个,在当前目录)

    输出原样的字符串,不进行转义:echo ’ hehe /n' ,直接用单引号就行,单引号不支持转义

    echo后面可以叠套需要计算的小程序,但是需要用反引号表明。比如echo `date`,运行的时候会显示当前时间。反引号意思是返回当前执行命令的结果

2 printf命令

    printf命令同样可以打印某些内容到显示器,但是据说比echo可操作性更强。

    两者不同在于,printf支持某些格式化输出,不会自带换行符,比如:printf " hello how are u ?\n" 得到hello how are u

    格式化输出,使用%s(字符串替代符),%d(十进制整数替代符),%f(浮点数替代符),%c(ascii码替代符,好像是)可以把后面的参数传递到printf中实现格式化输出,比如:

            实例1:printf " get string %s  and num %d \n" abc 123 edf 456

            得到输出:get string abc and num 123

                             get string bcd and num 456        #即使参数数量多于替代符数量也没关系,不够的参数%s会用null补,%d会用0补。

            实例2:printf "name:%-10s id:%-10d price:%-4.2f \n " apple 122 2.555 banana 123  8.123

            得到输出:name:apple id:122 price:2.56 

                             name:banana id:123 price:8.12

 

            解析:%-10s的意思是:首先这是一个替代符,%s,-的意思是输出的时候左对齐,10的意思的为这个数据留出10个字符的空间,如果这个字符不到10位,那就添加空格,如果这个字符多于10位,那就原样输出。%d同理,%f中的.2表示四舍五入留小数点后两位就可以。

    prinrf中的转义字符:就好像\n不仅仅是“\n"而是换行符一样,printf中还有很多字符有特殊含义:比如\\表示\,\t水平制表符,\v垂直制表符,\f换页...不多赘述。

    

posted @ 2018-07-03 16:49  0点0度  阅读(375)  评论(0编辑  收藏  举报