如果想出发,就不要等到明天!
全部博文(317)
分类: LINUX
2013-03-16 21:56:02
echo 共有 3 种输出方式:
1.1 直接在 echo 后面跟要输出的信息:
- echo "----------- echo without quotes ------------------------------"
- echo Hello world ! ; Nice to meet
- echo Home is : $HOME !
note:
1)shell 是一种解析语言,即不需要编译而直接按行读取并解析执行的程序语言。
2)shell 以分号 “ ;” 为指令执行的终止分隔符,因此在执行代码的第二行我们看到了 “;”后面的信息 “Nice to meet you" 被解析成下一条要执行的指令,
并且报错 “Nice :command not found”3)shell 里面引用变量时使用 "$" 符号,由于 HOME 是系统环境变量,因此 $HOME 被解析输出成它的值。
4)echo 默认每次从新的一行输出信息。
1.2 echo 后面使用双引号输出信息:
- echo "----------- echo within double-quotes ------------------------"
- echo "Hello world! ; Nice to meet you!"
- echo "HOME is : $HOME !"
note:
1) echo 理论上使用双引号 输出信息是不允许信息里面带有感叹号 “!” 的,但不知道为什么这个限制仅局限于手动在shell中执行指令,如下图所示:
而如果把这条带感叹号的指令放在一个 shell 脚本里面去执行却没有这个限制,这个问题我在学习 shell 编程的时候也没有搞明白,
就算是留点遗憾吧,无所谓,o(∩_∩)o 哈哈,也许这叫缺陷美吧。
1.3 echo 后面使用单引号输出信息:
- echo "----------- echo within single-quotes ------------------------"
- echo 'Hello world! ; Nice to meet you!'
- echo 'HOME is : $HOME !'
note :
1) echo 使用单引号输出信息时,变量是不会被展开的,即把变量符号直接当成字符串输出,而不是把变量符号展开表示成它的值输出。
2) echo 使用单引号输出信息时,可以带感叹号,手动、脚本执行均无此限制,如图所示:
总结:
1)echo 直接输出信息可以带变量输出,但不能输出带分号的信息。
2)echo 双引号输出信息可以带变量输出,但不能输出带感叹号“!”的信息,此限制仅限于手动在终端执行 echo ,在脚本文件中无此限制。
3)echo 单引号输出信息不可以带变量输出,手动、脚本执行,均能输出带感叹号的信息。
1.4 echo 输出转义字符:
- echo "----------- escape sequences for echo -------------"
- echo -n "Hello world!"
- echo "Nice to meet you echo!"
- echo "1\t2\t3"
- echo -e "1\t2\t3"
- echo -e -n "1\t2\t3"
- echo "Bye echo 123!"
note:
1) echo 使用 “-n” 参数,忽略默认的行末换行转义字符,由上面的 “Nice to meet you echo!” 紧跟在 “Hello world!”后面输出可见;
2) echo 使用 “-e” 参数,输出 "\t" 转义字符,"\t" 是制表符 tab,只有当使用 "-e" 参数时才输出成制表符 tab .
1.5 echo 带颜色输出信息:
- echo "----------- shell out color in echo --------------------------"
- echo -e -n "\e[1;31m This is the red text \t1\t2\t3 !\e[0m "
- echo "end"
- echo -e -n "\e[42;31m This is the red text and green background!\e[0m "
- echo "end"
- export GreenBackgroundText="green background"
- echo -e -n "\e[45;31m This is the red text and magenta back ground with variable $GreenBackgroundText! \e[0m "
- echo "end"
- echo -e -n "\e[1;41m This is only the red background! \e[0m "
- echo "end"
note:
1) echo 使用 "-e" 参数,让转义字符表示成颜色,使信息带颜色输出。
2) "\e[1;31m" 是颜色输出启用转义字符,1表示启用颜色;
3)"\e[0m" 是颜色输出复位转义字符,0表示复位颜色;4)不同的数值表示不一样的字体颜色,
复位=0, 黑=30, 红=31,绿=32,黄=33,蓝=34,紫=35,青=36,白=37.
5)不一样的数值表示不一样的字体背景颜色,
复位=0, 黑=40, 红=41,绿=42,黄=43,蓝=44,紫=45,青=46,白=47.
2,printf :
printf 使用与C语言相同的带变量输出方式:
2.1 printf 左对齐输出:
- echo "----------- printf left alignment ----------------------------"
- printf "Hello world!\n"
- printf "%-5s %-10s %-4s\n" NO NAME MARK
- printf "%-5s %-10s %-4.2f\n" 1 david 100
- printf "%-5s %-10s %-4.2f\n" 2 garfield 99.4
- printf "%-5s %-10s %-4.2f\n" 3 garfield00123 98.789
note:
1)printf 使用 双引号 + 参数 的格式化输出方式打印信息,使用与 C 语言 printf 相同的带参数方式;2.2 printf 右对齐输出:
2)printf 默认不带换行输出,如果需要在输出后换行,需要自行在双引号的信息的最后添加 "\n" ,跟C语言的 printf 相同;
3)"%-5s" " %-10s" "%-4.2f" 是带参数的格式化输出方式,与C语言里面的 printf 相似;
"%" :是参数替换符;
"-" :表示左对齐方式输出信息;
"s" :表示对参数使用字符串输出;
"f" :表示对参数使用浮点型输出;
"5" "10" : 对参数进行格式化输出,不够长度的使用空格补够,但如果长度超长,信息则会完整输出,即不会丟信息,如上图红框所示;
"4.2" :则表示对浮点参数使用保留两位小数的截取方式输出;
- echo "----------- printf right alignment - default -----------------"
- printf "Hello world!\n"
- printf "%5s %10s %10s\n" NO NAME MARK
- printf "%5s %10s %10.2f\n" 1 david 100
- printf "%5s %10s %10.2f\n" 2 garfield 99.4
- printf "%5s %10s %10.2f\n" 3 garfield00123 98.789
note :
1) printf 默认情况不带“-”是右对齐输出的;
2) 由上图红框所示,无论左对齐、右对齐,对参数进行格式化输出,不够长度的使用空格补够,但如果长度超长,信息则会完整输出,即不会丟信息;
2.3 printf 带颜色输出信息:
- echo "---------- shell out color in printf -------------------------"
- printf "\e[42;31mPrintf red text and green background!\e[0m\n";
note:
1) printf 使用与echo 相同的颜色转义字符与配色值,但 printf 不需要像 echo 哪样带有 "-e" 这样的使能参数。