echo命令主要用于字符串的輸出,可以是不要引號(hào)但不支持轉(zhuǎn)義,雙引號(hào)可用于轉(zhuǎn)義字符,
printf命令也是輸出命令但是要比echo 的移植性好,制定字符串的寬度,左右對(duì)其方式;可以格式控制字符,指定參數(shù)列表,參數(shù)空格區(qū)分,語(yǔ)法結(jié)構(gòu):
printf format-string [arguments...]
#!/bin/bash #author:zrc #自動(dòng)換行的對(duì)比 echo -e "OK! \n" # -e 開(kāi)啟轉(zhuǎn)義 \n 開(kāi)啟換行 echo "is a echo" echo "----------------------------" printf "good , shell,\n,python" #輸出: OK! is a echo ---------------------------- good , shell, ,python
#!/bin/bash #author:zrc printf "%-10s %-8s %-4s\n" id name age printf "%-10s %-8s %-4s\n" 1 jeey 18 printf "%-10s %-8s %-4.2f\n" 2 tom 19 printf "%-10s %-8s %-4.2f\n" 3 king 20 printf "%-10s %-8s %-4.2f\n" 4 quren 33.333 #輸出 id name age 1 jeey 18 2 tom 19.00 3 king 20.00 4 quren 33.33
%-10s %-8s %-4s\n 都是針對(duì)參數(shù)類別的格式化 %-10s -- 第一位參數(shù)必須是string字符串(-10 表示寬度為10個(gè)字符且左對(duì)齊,沒(méi)有-表示右對(duì)齊;如果不是字符和字符串 就報(bào)錯(cuò) ) %-8s -- 第二位參數(shù)必須是string字符串(-8 表示寬度為8個(gè)字符且左對(duì)齊,沒(méi)有-表示右對(duì)齊;如果不是字符和字符串 就報(bào)錯(cuò) ) %-4s -- 第三位參數(shù)必須是string字符串(-4 表示寬度為4個(gè)字符且左對(duì)齊,沒(méi)有-表示右對(duì)齊;如果不是字符和字符串 就報(bào)錯(cuò) ) %-4.2f -- 第三位參數(shù)必須是float浮點(diǎn)(-4.2 表示寬度為4個(gè)格式化小數(shù),保留后面兩位,沒(méi)有-表示右對(duì)齊;如果不是整數(shù) 就報(bào)錯(cuò) )
更多案例:
#!/bin/bash #author:zrc #沒(méi)有引號(hào) printf %s'\n' aaaaa #單引號(hào) printf '%d %s\n' '123456' 'aaaaa' #雙引號(hào) printf "%d %s\n" '123456' 'bbbbb' #超過(guò)指定參format-string數(shù),會(huì)被重用 printf "%d %s\n" '123456' 'aaaaa' '456789' 'ccccc' #如果沒(méi)有參數(shù),那么%s用NULL代替,%d用0代替 printf "%s --- %d"'\n' #%c 自動(dòng)截取字符串的第一個(gè)字符作為結(jié)果輸出 printf "%d %c\n" '123456' 'bbbbb'
%d %s %c %f 都是針對(duì)參數(shù)類別的格式化 %d -- 十進(jìn)制整數(shù)(對(duì)應(yīng)參數(shù)位必須是整數(shù),如果不是就報(bào)錯(cuò) ) %c --Char字符(對(duì)應(yīng)參數(shù)位必須是字符串或者字符型,如果不是就報(bào)錯(cuò) )
序列 | 說(shuō)明 |
---|---|
\a | 警告字符,通常為ASCII的BEL字符 |
\b | 后退 |
\c | 抑制(不顯示)輸出結(jié)果中任何結(jié)尾的換行字符(只在%b格式指示符控制下的參數(shù)字符串中有效),而且,任何留在參數(shù)里的字符、任何接下來(lái)的參數(shù)以及任何留在格式字符串中的字符,都被忽略 |
\f | 換頁(yè)(formfeed) |
\n | 換行 |
\r | 回車(chē)(Carriage return) |
\t | 水平制表符 |
\v | 垂直制表符 |
\\ | 一個(gè)字面上的反斜杠字符 |
#!/bin/bash #author:zrc #顯示字符串 echo "this is string" #顯示轉(zhuǎn)義字符 echo "\"this is string\"" #顯示結(jié)果定向到文件,符號(hào)>>追加到文件 echo "this is string" > file #顯示輸入變量 read name echo -e "this is ${name} \n" # -e開(kāi)啟轉(zhuǎn)義 -n換行 echo -e "this is ${name} \c" # -e開(kāi)啟轉(zhuǎn)義 -c不換行 read password -p "請(qǐng)輸入一段文字:" -n 6 -t 5 -s echo -e "\n password is $password" 參數(shù)說(shuō)明: -p 輸入提示文字 -n 輸入字符長(zhǎng)度限制(達(dá)到6位,自動(dòng)結(jié)束) -t 輸入限時(shí) -s 隱藏輸入內(nèi)容