目錄
1、創(chuàng)建shell腳本文件
?2、顯示消息
3、?環(huán)境變量
4、用戶變量
5、命令替換
?編輯
?6、重定向輸入與輸出
6.1、輸出重定向
?6.2、輸入重定向
?編輯
7、執(zhí)行數(shù)學(xué)運算
7.1、expr命令
7.2、bc的基本用法
?8、退出腳本
完整筆記請前往此處獲?。篽ttps://download.csdn.net/download/qq_55908180/88366003
Shell的核心是命令行提示符
1、創(chuàng)建shell腳本文件
要將shell命令放到文本文件中,首先需要用文本編譯器來創(chuàng)建一個文件,然后把命令輸入到文件中。在創(chuàng)建shell腳本文件時,必須在文件的第一行指定要使用的shell。格式是:? #!/bin/bash?一般在shell腳本中,井號(#)用作注釋。Shell不會處理腳本中的注釋行,但是,腳本文件中第一行除外,#后面的感嘆號會告訴shell用哪個shell運行腳本。例如:
1 #!/bin/bash 2 3 date 4 who
?在編譯之前需要改一下test1的權(quán)限,因為在創(chuàng)建新文件時只有文件的屬主與屬組才有讀寫權(quán)限,所以需要用:chmod u+x test1 之后再編譯就可以正常編譯。
?2、顯示消息
可以通過echo命令實現(xiàn)輸出的效果。如:
在默認(rèn)情況下,不需要使用引號將要顯示的文本字符串劃出來,但有時字符串中出現(xiàn)引號的話就會比較麻煩。如:
此時就需要用單引號或者雙引號來劃定文本字符串,如:
?也可以把echo語句添加到shell腳本中任何需要顯示額外信息的地方。如:
1 #!/bin/bash
2
3 echo The time and date are:
4 date
5 echo "Let's see who's logged into the system:'"
6 who
3、?環(huán)境變量
?在shell腳本中,可以在環(huán)境變量名之前加上美元符($)來使用這些環(huán)境變量。如:
1 #!/bin/bash
2
3 echo "User info for useid: $USER"
4 echo UID: $UID
5 echo HOME: $HOME
結(jié)果顯示:
?注意:echo命令中環(huán)境變量會在腳本運行時替換為當(dāng)前值,腳本在引號中出現(xiàn)美元符時,腳本會以為你在引用一個變量,這樣輸出的可能不是我們的期望值,所以想要輸出我們期望值,可以在美元符前放一個反斜線\。因為反斜線允許shell腳本將美元符解讀為實際的美元符,而不是變量。如:
4、用戶變量
除了環(huán)境變量,shell腳本也允許在腳本中定義和使用自定義的變量,用戶變量可以是任何由字母、數(shù)字和下劃線組成的字符串,但是長度不超過20個,值得注意的是,用戶變量是區(qū)分大小寫的。使用等號將值賦值給用戶變量,注意在變量、等號和值之間不能出現(xiàn)空格。
注意:
1、變量名不能以數(shù)字開頭,但可以包含數(shù)字。
2、盡量避免使用shell關(guān)鍵字作為變量名,以免引起混淆。
3、常量的變量名通常使用大寫字母,例如?PI=3.14。
如:
只讀變量
可以使用 readonly 命令可以將變量定義為只讀變量,只讀變量的值不能被改變。
如下所示:
?
?刪除變量
可以使用使用 unset 命令可以刪除變量。
使用格式:unset variable_name
注意:變量被刪除后不能再次使用。unset 命令不能刪除只讀變量。
在shell中,變量一般視作字符串,可以使用單引號或雙引號來定義字符串。
單引號字符串的限制:
1、單引號里的任何字符都會原樣輸出,單引號字符串中的變量是無效的;
2、單引號字串中不能出現(xiàn)單獨一個的單引號(對單引號使用轉(zhuǎn)義符后也不行),但可成對出現(xiàn),作為字符串拼接使用。
雙引號的優(yōu)點:
1、雙引號里可以有變量
2、雙引號里可以出現(xiàn)轉(zhuǎn)義字符
5、命令替換
shell腳本中最有用的特征之一就是可以從命令輸出中提取信息,并把它賦值給變量。有兩種方法可以把命令輸出賦值給變量:
- 反引號字符(`)
- $()格式
如下:
?6、重定向輸入與輸出
有時候你想保存某個命令的輸出而不僅是讓它只顯示在顯示器上,shell提供了幾個操作符,可以把命令的輸出重定向到另外一個位置。重定向可以用于輸入,也可以用于輸出
6.1、輸出重定向
最基本的重定向把命令輸出送到一個文件中。Shell用大于號(>)來實現(xiàn)這一功能。把之前顯示器上出現(xiàn)的命令輸出保存到指定的輸出文件中,如:
?
?如果你想讓命令的輸出追加到已有文件中,而不是覆蓋文件原有內(nèi)容,可以用遠(yuǎn)大于號(>>)來追加數(shù)據(jù),如:
?6.2、輸入重定向
輸入重定向的輸出重定向時正好相反的。輸入重定向是把文件的內(nèi)容重定向到命令,而不是把命令的輸出重定向到文件中。
輸入重定向符號是小于號(<):記憶方法:在命令行中,命令在左側(cè),重定向符可以理解為指向數(shù)據(jù)流動的方向,小于號說明是數(shù)據(jù)是在從輸入文件流向命令。如:
Wc命令可以對文本中的數(shù)據(jù)進(jìn)行計數(shù),在默認(rèn)情況下會輸出三個值,依次為:文本的行數(shù);文本的詞數(shù);文本的字節(jié)數(shù)。
還有一種輸入重定向的方法,叫做內(nèi)聯(lián)輸入重定向。這種方法不需要使用文件進(jìn)行重定向,只需要在命令行中指定用于輸入重定向的數(shù)據(jù)就可以了。內(nèi)聯(lián)輸入重定向的符號是遠(yuǎn)小于號(<<)。除了這個符號,還要指定一個文本標(biāo)記用來劃分輸入數(shù)據(jù)的開始和結(jié)束。注意:任何字符串都可以作為文本標(biāo)記,但是在數(shù)據(jù)的開始和結(jié)尾文本標(biāo)記必須一致。如:
7、執(zhí)行數(shù)學(xué)運算
對于shell腳本來說,有兩種途徑可以用來進(jìn)行數(shù)學(xué)運算。
7.1、expr命令
Expr命令允許命令在命令行上處理數(shù)學(xué)表達(dá)式,但是很笨拙。
操作符 |
描述 |
ARG1? |? ARG2 |
如果ARG1既不是null也不是0,返回ARG1,否則返回ARG2 |
ARG1? &? ARG2 |
如果沒有參數(shù)是null或者為0,返回ARG1,否則返回0 |
ARG1? <? ARG2 |
如果ARG1小于ARG2,返回1,否則為0 |
ARG1? <=? ARG2 |
如果ARG1小于或等于ARG2,返回1,否則為0 |
ARG1? =? ARG2 |
如果ARG1等于ARG2,返回1,否則為0 |
ARG1 !=? ARG2 |
如果ARG1不等于ARG2,返回1,否則為0 |
ARG1? >=? ARG2 |
如果ARG1大于或等于ARG2,返回1,否則為0 |
ARG1? >? ARG2 |
如果ARG1大于ARG2,返回1,否則為0 |
ARG1? +? ARG2 |
返回ARG1和ARG2的算數(shù)運算和 |
ARG1? -? ARG2 |
返回ARG1和ARG2的算數(shù)運算差 |
ARG1? *? ARG2 |
返回ARG1和ARG2的算數(shù)乘積 |
ARG1? /? ARG2 |
返回ARG1和ARG2的算數(shù)商 |
ARG1? %? ARG2 |
返回ARG1和ARG2的算數(shù)余數(shù) |
使用方括號
在把一個數(shù)學(xué)運算結(jié)果賦值給某個變量時,可以用美元符和方括號把數(shù)學(xué)表達(dá)式包圍起來。如:
?這種技術(shù)也適用于腳本。如:
?值得注意的是:bash shell 數(shù)學(xué)運算符只支持整數(shù)運算,這是一個對進(jìn)行任何實際的數(shù)學(xué)運算的巨大的限制。
浮點解決方案
有幾種方法能夠克服數(shù)學(xué)運算的整數(shù)限制。最常見的方法是使用內(nèi)建的bash計算器bc。
7.2、bc的基本用法
Bash計算器能夠識別到:
數(shù)字(整數(shù)和浮點數(shù))
變量(簡單變量和數(shù)組)
注釋(以#或者C語言中的/* */開始的行)
表達(dá)式
編程語言(比如if-then語句)
函數(shù)
可以在shell提示符下通過bc命令訪問bash計算器。如:
?浮點運算是借助內(nèi)建變量scale控制的,必須把這個值設(shè)置為你希望保留的小數(shù)位數(shù),scale默認(rèn)為0。 -q命令行選項可以不顯示bash的歡迎信息。如:
?除了普通數(shù)字,bash計算器還支持變量。如:
?在腳本中使用bc
?可以不使用數(shù)字表達(dá)式值,也可以用shell腳本定義好的變量。如:
?一旦變量被賦值,也可以用于其他的運算。如:
?但是這種方法只適用于較短的運算,如果涉及較多的數(shù)字,需要進(jìn)行大量的運算,可以使用內(nèi)聯(lián)輸入重定向來解決這個問題。如:
?8、退出腳本
在默認(rèn)情況下,shell腳本會以腳本的最后一個命令的退出狀態(tài)碼退出。如:
?也可以在退出時設(shè)置返回自己的退出碼,使用exit命令。注意:退出狀態(tài)為0~255的整數(shù)值,也可以用腳本中的變量作為退出碼。如:文章來源:http://www.zghlxwxcb.cn/news/detail-736934.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-736934.html
狀態(tài)碼 | 描述 |
0 | 命令成功結(jié)束 |
1 | 一般性未知錯誤 |
2 | 不適合的shell命令 |
126 | 命令不可執(zhí)行 |
127 | 沒找到命令 |
128 | 無效的退出參數(shù) |
128+x | 與Linux信號x相關(guān)的嚴(yán)重錯誤 |
130 | 通過Ctrl+C終止的命令 |
255 | 正常范圍之外的退出狀態(tài)碼 |
到了這里,關(guān)于Linux 系統(tǒng)shell腳本編程筆記——腳本入門的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!