
Shell 的 echo 指令用于字符串的輸出。命令格式:
(相關資料圖)
echo string
echo "It is a test"echo It is a test
加不加引號效果一樣
如果需要顯示轉義字符,則需要在轉義字符前加上反斜杠 \
echo "\"It is a test\""echo \"It is a test\"
輸出:
"It is a test""It is a test"
#!/bin/bashread name1 name2echo "name1:$name1 name2: $name2"
read為從標準輸入中讀取一行,并把輸入行的每個字段的值指定給 shell 變量輸出:
[root@liang shell]# ./shell01.shliang1 liang2 #此處為輸入的變量name1:liang1 name2: liang2
#!/bin/bashecho -e "first line! \n" # -e 開啟轉義 \n換行echo "It is a test"echo -e "first line! \c" # -e 開啟轉義 \c不換行echo "It is a test"
輸出:
[root@liang shell]# ./shell01.shfirst line! It is a testfirst line! It is a test
默認換行。
echo "It is a test" > myfile
echo "$name""輸出:
$name\"
echo `date`echo `ls`
注意: 這里使用的是反引號 `, 而不是單引號 "。
顯示當前日期及ls命令執行的結果[root@liang shell]# ./shell01.shMon Oct 26 18:13:26 CST 2020case_loop2.sh case_loop.sh def_function.sh for_loop2.sh for_loop.sh get_sys.sh homework1.sh homework.sh if_condiction.sh jisuanqi.sh one_shell.sh pass000.sh pass001.sh passwd_bk.sh shell01.sh shell02.sh sshd_config_bk sys1.txt sys.txt text0001.sh text0002.sh text0003.sh valiables.sh
printf 使用引用文本或空格分隔的參數,外面可以在 printf 中使用格式化字符串,還可以制定字符串的寬度、左右對齊方式等。默認 printf 不會像 echo 自動添加換行符,我們可以手動添加 \n。
printf 命令的語法:
printf format-string [arguments...]
參數說明:
format-string: 為格式控制字符串arguments: 為參數列表。#!/bin/bashprintf "%-10s %-8s %-4s\n" 姓名 性別 體重kg printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234 printf "%-10s %-8s %-4.2f\n" 楊過 男 48.6543 printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
輸出:
[root@liang shell]# ./shell01.sh姓名 性別 體重kg郭靖 男 66.12楊過 男 48.65郭芙 女 47.99
最常用的格式指示符有兩個%s用于字符串,而%d或者%i用于十進制整數,%f用于浮點格式
%-10s 指一個寬度為10個字符(-表示左對齊,沒有則表示右對齊),任何字符都會被顯示在10個字符寬的字符內,如果不足則自動以空格填充,超過也會將內容全部顯示出來。
#!/bin/bash# format-string為雙引號printf "%d %s\n" 1 "abc"# 單引號與雙引號效果一樣 printf "%d %s\n" 1 "abc" # 沒有引號也可以輸出printf %s abcdef# 格式只指定了一個參數,但多出的參數仍然會按照該格式輸出,format-string 被重用printf %s omn jkfprintf "%s\n" abc defprintf "%s %s %s\n" a b c d e f g h i j# 如果沒有 arguments,那么 %s 用NULL代替,%d 用 0 代替printf "%s and %d \n"
輸出內容:
[root@liang shell]# ./shell01.sh1 abc1 abcabcdefomnjkfabcdefa b cd e fg h ij and 0
\a: 輸出警告聲音;\b:輸出退格鍵,也就是 Backspaced 鍵;\f:清除屏幕;\n:換行;\r:回車,也就是 Enter 鍵;\t:水平輸出退格鍵,也就是 Tab 鍵;\v:垂直輸出退格鍵,也就是 Tab 鍵;實例:新建一個文件 text0001.txt
ID Name PHP Linux MySQL Average1 Liming 82 95 86 87.662 Sc 74 96 87 85.663 Gao 99 83 93 91.66
直接輸出:
[root@liang shell]# printf "%s" $(cat text0001.txt)IDNamePHPLinuxMySQLAverage1Liming82958687.662Sc74968785.663Gao99839391.66
輸出結果十分混亂。這就是 printf 命令,如果不指定輸出格式,則會把所有輸出內容連在一起輸出。其實文本的輸出本身就是這樣的,cat 等文本輸出命令之所以可以按照格式漂亮地輸出,那是因為 cat 命令已經設定了輸出格式。那么,為了用 printf 輸出合理的格式,應該這樣做:
[root@liang shell]# printf "%s\t %s\t %s\t %s\t %s\t %s\t\n" $(cat text0001.txt)ID Name PHP Linux MySQL Average1 Liming 82 95 86 87.662 Sc 74 96 87 85.663 Gao 99 83 93 91.66
注意:在 printf 命令的單引號中輸入的任何空格都不會反映到格式輸出中,只有格式輸出符號才能影響 printf 命令的輸出結果。
因為我們的文檔有6列,所以使用 6 個"%s"代表這 6 列字符串,每個字符串之間用"\t"分隔,也可以設定字符串長度;最后還要加入"\n",使得每行輸出都換行,否則這些數據還是會連成一行的。