加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • Shell echo 命令
    •  
    • printf 的轉(zhuǎn)義序列
    •  
    • 實(shí)例
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

shell腳本的使用該熟練起來了,你說呢?(篇三)

2020/12/09
117
閱讀需 9 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

繼續(xù)前一篇的文章:

shell 腳本的使用該熟練起來了,你說呢?(篇一)

shell 腳本的使用該熟練起來了,你說呢?(篇二)

文章里面測試的命令腳本文件,大家關(guān)注我公眾號后,可以私信我領(lǐng)取文件。

Shell echo 命令

Shell 的 echo 指令與 PHP 的 echo 指令類似,都是用于字符串的輸出。命令格式:

echo string

您可以使用 echo 實(shí)現(xiàn)更復(fù)雜的輸出格式控制。

1. 顯示普通字符串:

echo "It is a test"// 這里的雙引號完全可以省略,以下命令與上面實(shí)例效果一致echo It is a test

?

2. 顯示轉(zhuǎn)義字符

echo?""It?is?a?test""

結(jié)果將是:

同樣,雙引號也可以省略

?

3. 顯示變量

read 命令從標(biāo)準(zhǔn)輸入中讀取一行,并把輸入行的每個字段的值指定給 shell 變量

read name echo "$name It is a test"

以上代碼保存為 hello_shell.sh,name 接收標(biāo)準(zhǔn)輸入的變量,結(jié)果將是:

?

4. 顯示換行

echo?-e?"OK!?n"???#   -e?開啟轉(zhuǎn)義  echo "It is a test"

輸出結(jié)果:

?

5. 顯示不換行

echo -e "OK! c" # -e 開啟轉(zhuǎn)義 c 不換行echo "It is a test"

輸出結(jié)果:

?

6. 顯示結(jié)果定向至文件

echo "It is a test" > lynfile

./hello_shell.sh 執(zhí)行腳本,當(dāng)前目錄下就會生成一個?lynfile 文件,里面的內(nèi)容為 It is a test

?

7. 原樣輸出字符串,不進(jìn)行轉(zhuǎn)義或取變量(用單引號)

echo '$name"'

輸出結(jié)果:

?

8. 顯示命令執(zhí)行結(jié)果

echo `date`

注意:?這里使用的是反引號?`, 而不是單引號?'。

結(jié)果將顯示當(dāng)前日期

Shell printf 命令

我們學(xué)習(xí)了 Shell 的 echo 命令,我們再來學(xué)習(xí) Shell 的另一個輸出命令 printf。

printf 命令模仿 C 程序庫(library)里的 printf() 程序。

printf 由 POSIX 標(biāo)準(zhǔn)所定義,因此使用 printf 的腳本比使用 echo 移植性好。

printf 使用引用文本或空格分隔的參數(shù),外面可以在 printf 中使用格式化字符串,還可以制定字符串的寬度、左右對齊方式等。默認(rèn) printf 不會像 echo 自動添加換行符,我們可以手動添加 n。

printf 命令的語法:

printf  format-string  [arguments...]

參數(shù)說明:

format-string:?為格式控制字符串

arguments:?為參數(shù)列表。

實(shí)例如下:

echo "echo  Hello, Shell" lyn, actionprintf?"printf?Hello,?Shelln"?lyn,?action

接下來,我來用一個腳本來體現(xiàn) printf 的強(qiáng)大功能:

printf "%-10s %-8s %-4sn" 姓名 性別 體重 kg  printf "%-10s %-8s %-4.2fn" 張三 男 66.1234 printf "%-10s %-8s %-4.2fn" 李四 男 48.6543 printf "%-10s %-8s %-4.2fn" 王五 女 47.9876 

執(zhí)行腳本,輸出結(jié)果如下所示:

更多實(shí)例:

#?format-string 為雙引號printf "%d %sn" 1 "abc"   # 單引號與雙引號效果一樣 printf '%d %sn' 1 "abc"# 沒有引號也可以輸出printf %s abcdefprintf "n"# 格式只指定了一個參數(shù),但多出的參數(shù)仍然會按照該格式輸出,format-string 被重用printf %s abc defprintf "n"printf "%sn" abc defprintf "n"printf "%s %s %sn" a b c d e f g h i jprintf "n"# 如果沒有 arguments,那么 %s 用 NULL 代替,%d 用 0 代替printf?"%s?and?%d?n"

執(zhí)行腳本,輸出結(jié)果如下所示:

?

printf 的轉(zhuǎn)義序列

序列 說明
a 警告字符,通常為 ASCII 的 BEL 字符
b 后退
c 抑制(不顯示)輸出結(jié)果中任何結(jié)尾的換行字符(只在%b 格式指示符控制下的參數(shù)字符串中有效),而且,任何留在參數(shù)里的字符、任何接下來的參數(shù)以及任何留在格式字符串中的字符,都被忽略
f 換頁(formfeed)
n 換行
r 回車(Carriage return)
t 水平制表符
v 垂直制表符
一個字面上的反斜杠字符
ddd 表示 1 到 3 位數(shù)八進(jìn)制值的字符。僅在格式字符串中有效