shell指令碼的使用該熟練起來了,你說呢?(篇三)
繼續前一篇的文章:
文章裡面測試的命令指令碼檔案,大家關注我公眾號後,可以私信我領取檔案。
作者:良知猶存
轉載授權以及圍觀:歡迎新增微信公眾號:羽林君
shell echo
Shell echo命令
Shell 的 echo 指令與 PHP 的 echo 指令類似,都是用於字串的輸出。命令格式:
echo string
您可以使用echo實現更復雜的輸出格式控制。
1.顯示普通字串:
echo "It is a test"
//這裡的雙引號完全可以省略,以下命令與上面例項效果一致
echo It is a test
2.顯示轉義字元
echo"\"Itisatest\""
結果將是:
同樣,雙引號也可以省略
3.顯示變數
read 命令從標準輸入中讀取一行,並把輸入行的每個欄位的值指定給 shell 變數
read
name echo "$name It is a test"
以上程式碼儲存為hello_shell.sh,name 接收標準輸入的變數,結果將是:
4.顯示換行
echo-e"OK!\n"# -e開啟轉義
echo "It is a test"
輸出結果:
5.顯示不換行
echo -e "OK! \c" # -e 開啟轉義 \c 不換行
echo "It is a test"
輸出結果:
6.顯示結果定向至檔案
echo "It is a test" > lynfile
./hello_shell.sh 執行指令碼,當前目錄下就會生成一個lynfile 檔案,裡面的內容為It is a test
7.原樣輸出字串,不進行轉義或取變數(用單引號)
echo '$name\"'
輸出結果:
8.顯示命令執行結果
echo `date`
注意:這裡使用的是反引號`, 而不是單引號'。
結果將顯示當前日期
shell printf
Shell printf 命令
我們學習了 Shell 的 echo 命令,我們再來學習 Shell 的另一個輸出命令 printf。
printf 命令模仿 C 程式庫(library)裡的 printf() 程式。
printf 由 POSIX 標準所定義,因此使用 printf 的指令碼比使用 echo 移植性好。
printf 使用引用文字或空格分隔的引數,外面可以在 printf 中使用格式化字串,還可以制定字串的寬度、左右對齊方式等。預設 printf 不會像 echo 自動新增換行符,我們可以手動新增 \n。
printf 命令的語法:
printf format-string [arguments...]
引數說明:
-
format-string:為格式控制字串
-
arguments:為引數列表。
例項如下:
echo "echo Hello, Shell" lyn, actionprintf"printfHello,Shell\n"lyn,action
接下來,我來用一個指令碼來體現printf的強大功能:
printf "%-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
執行指令碼,輸出結果如下所示:
更多例項:
#format-string為雙引號printf "%d %s\n" 1 "abc" # 單引號與雙引號效果一樣
printf '%d %s\n' 1 "abc"
# 沒有引號也可以輸出
printf %s abcdef
printf "\n"
# 格式只指定了一個引數,但多出的引數仍然會按照該格式輸出,format-string 被重用
printf %s abc def
printf "\n"
printf "%s\n" abc def
printf "\n"
printf "%s %s %s\n" a b c d e f g h i j
printf "\n"
# 如果沒有 arguments,那麼 %s 用NULL代替,%d 用 0 代替
printf"%sand%d\n"
執行指令碼,輸出結果如下所示:
printf的轉義序列
序列 | 說明 |
---|---|
\a | 警告字元,通常為ASCII的BEL字元 |
\b | 後退 |
\c | 抑制(不顯示)輸出結果中任何結尾的換行字元(只在%b格式指示符控制下的引數字串中有效),而且,任何留在引數裡的字元、任何接下來的引數以及任何留在格式字串中的字元,都被忽略 |
\f | 換頁(formfeed) |
\n | 換行 |
\r | 回車(Carriage return) |
\t | 水平製表符 |
\v | 垂直製表符 |
\ | 一個字面上的反斜槓字元 |
\ddd | 表示1到3位數八進位制值的字元。僅在格式字串中有效 |
\0ddd | 表示1到3位的八進位制值字元 |
例項
printf "a string, no processing:<%s>\n" "A\nB"
printf "a string, no processing:<%b>\n" "A\nB"
printf"www.baidu.com\a"
輸出結果為:
shell 檔案包含
Shell 檔案包含
和其他語言一樣,Shell 也可以包含外部指令碼。這樣可以很方便的封裝一些公用的程式碼作為一個獨立的檔案。
Shell 檔案包含的語法格式如下:
. filename # 注意點號(.)和檔名中間有一空格
或
source filename
例項
建立兩個 shell 指令碼檔案。
url.sh 程式碼如下:
#!/bin/bash
url="http://www.baidu.com"
url_read.sh 程式碼如下:
#!/bin/bash
#使用 . 號來引用url.sh 檔案
#. ./url.sh
# 或者使用以下包含檔案程式碼
source ./url.sh
echo"官網地址:$url"
接下來,我們為 url_read.sh 新增可執行許可權並執行:
注:被包含的檔案 url.sh 不需要可執行許可權。
這就是我分享的shell指令碼,其中參考了很多人的文章,如果大家有什麼更好的思路,也歡迎分享交流哈。
—END—
推薦閱讀
【2】嵌入式底層開發的軟體框架簡述
【3】CPU中的程式是怎麼執行起來的必讀
【4】C++的匿名函式(lambda表示式)
【5】階段性文章總結分析
本公眾號全部原創乾貨已整理成一個目錄,回覆[ 資源 ]即可獲得。
更多分享,掃碼關注我
參考連結:
https://www.runoob.com/linux/linux-shell-variable.html