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

繼續前一篇的文章:javascript

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

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

文章裏面測試的命令腳本文件,你們關注我公衆號後,能夠私信我領取文件。linux

做者:良知猶存nginx

轉載受權以及圍觀:歡迎添加微信公衆號:羽林君shell


shell echobash

Shell echo命令

Shell 的 echo 指令與 PHP 的 echo 指令相似,都是用於字符串的輸出。命令格式:微信

echo string 

您可使用echo實現更復雜的輸出格式控制。app

1.顯示普通字符串:

echo "It is a test" //這裏的雙引號徹底能夠省略,如下命令與上面實例效果一致 echo It is a test 

2.顯示轉義字符

echo "\"It is a test\"" 

結果將是:框架

一樣,雙引號也能夠省略

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 "printf Hello, 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 "%s and %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

推薦閱讀

【1】C++的智能指針你瞭解嗎?

【2】嵌入式底層開發的軟件框架簡述 
【3】CPU中的程序是怎麼運行起來的 必讀
【4】C++的匿名函數(lambda表達式)
【5】階段性文章總結分析

本公衆號所有原創乾貨已整理成一個目錄,回覆[ 資源 ]便可得到。

更多分享,掃碼關注我

參考連接:

https://www.runoob.com/linux/linux-shell-variable.html

相關文章
相關標籤/搜索