您好,登錄后才能下訂單哦!
echo命令主要用于字符串的輸出,可以是不要引號但不支持轉義,雙引號可用于轉義字符,
printf命令也是輸出命令但是要比echo 的移植性好,制定字符串的寬度,左右對其方式;可以格式控制字符,指定參數列表,參數空格區分,語法結構:
printf format-string [arguments...]
#!/bin/bash #author:zrc #自動換行的對比 echo -e "OK! \n" # -e 開啟轉義 \n 開啟換行 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 都是針對參數類別的格式化 %-10s -- 第一位參數必須是string字符串(-10 表示寬度為10個字符且左對齊,沒有-表示右對齊;如果不是字符和字符串 就報錯 ) %-8s -- 第二位參數必須是string字符串(-8 表示寬度為8個字符且左對齊,沒有-表示右對齊;如果不是字符和字符串 就報錯 ) %-4s -- 第三位參數必須是string字符串(-4 表示寬度為4個字符且左對齊,沒有-表示右對齊;如果不是字符和字符串 就報錯 ) %-4.2f -- 第三位參數必須是float浮點(-4.2 表示寬度為4個格式化小數,保留后面兩位,沒有-表示右對齊;如果不是整數 就報錯 )
更多案例:
#!/bin/bash #author:zrc #沒有引號 printf %s'\n' aaaaa #單引號 printf '%d %s\n' '123456' 'aaaaa' #雙引號 printf "%d %s\n" '123456' 'bbbbb' #超過指定參format-string數,會被重用 printf "%d %s\n" '123456' 'aaaaa' '456789' 'ccccc' #如果沒有參數,那么%s用NULL代替,%d用0代替 printf "%s --- %d"'\n' #%c 自動截取字符串的第一個字符作為結果輸出 printf "%d %c\n" '123456' 'bbbbb'
%d %s %c %f 都是針對參數類別的格式化 %d -- 十進制整數(對應參數位必須是整數,如果不是就報錯 ) %c --Char字符(對應參數位必須是字符串或者字符型,如果不是就報錯 )
序列 | 說明 |
---|---|
\a | 警告字符,通常為ASCII的BEL字符 |
\b | 后退 |
\c | 抑制(不顯示)輸出結果中任何結尾的換行字符(只在%b格式指示符控制下的參數字符串中有效),而且,任何留在參數里的字符、任何接下來的參數以及任何留在格式字符串中的字符,都被忽略 |
\f | 換頁(formfeed) |
\n | 換行 |
\r | 回車(Carriage return) |
\t | 水平制表符 |
\v | 垂直制表符 |
\\ | 一個字面上的反斜杠字符 |
#!/bin/bash #author:zrc #顯示字符串 echo "this is string" #顯示轉義字符 echo "\"this is string\"" #顯示結果定向到文件,符號>>追加到文件 echo "this is string" > file #顯示輸入變量 read name echo -e "this is ${name} \n" # -e開啟轉義 -n換行 echo -e "this is ${name} \c" # -e開啟轉義 -c不換行 read password -p "請輸入一段文字:" -n 6 -t 5 -s echo -e "\n password is $password" 參數說明: -p 輸入提示文字 -n 輸入字符長度限制(達到6位,自動結束) -t 輸入限時 -s 隱藏輸入內容
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。