1.shell常用特殊變數含**釋
$# 傳入shell指令碼的引數個數
$? 最後執行命令的結束碼(0表示:成功執行 非0表示:執行過程中出現異常或非正常退出)
狀態碼:
0命令成功結束
1通用未知錯誤
2誤用shell命令
126命令不可執行
127沒找到命令
128無效退出引數
128+x
linux訊號x的嚴重錯誤
130linux訊號2的嚴重錯誤,即命令通過sigint(ctrl+c)終止
255退出狀態碼越界
$$ shell本身的pid(即processid)
$! shell最後執行的後台processid
$* 所有的引數列表
$@ 所有的引數列表 沒看出和$*有什麼區別,都是以"$1" "$2" ... "$n"的形式輸出所有引數
$0 shell本身的檔名
$- 使用set命令設定的flag一覽
$1 - $n 新增到shell的各個引數值,$1是第乙個引數、$2是第二個引數...
2.shell數值、字串、檔案的比較
數值比較:
-eq 等於
-ne 不等於
-gt 大於
-ge 大於等於
-lt 小於
-le 小於等於
以上長和test命令一起使用,如:
#!/bin/bash
value1=8
if [$value1 -gt 6]
then
echo "$value1 is greater than 6"
fi字串比較: =等於
!=不等於
<
小於》大於-n str 檢查str的長度是否非0
-z str 檢查str的長度是否為0
檔案比較:
-d file 檢查file是否存在並是乙個目錄
-e file 檢查file是否存在
-f file 檢查file是否存在並是乙個檔案
-r file 檢查file是否存在並可讀
-s file 檢查file是否存在並非空
-w file 檢查file是否存在並可寫
-x file 檢查file是否存在並可執行
-o file 檢查file是否存在並屬當前使用者所有
-g file 檢查file是否存在並且預設組與當前使用者相同
file1 -nt file2 檢查file1是否比file2新
file1 -ot file2 檢查file1是否比file2舊
3.bash shell提供了兩項可在if - then語句中使用的高階特性
3.1 用於數學表示式的雙括號
雙括號命令符號:
val++ 後增
val-- 後減
++val 先增
--val 先減
! 邏輯求反
~ 位求反
** 冪運算
<< 左位移
>>右位移
& 位布林和
| 位布林或
&& 邏輯和
|| 邏輯或
#!/bin/bash
value1=8
if (( $value1 ** 2 > 60 )))
then
(( value2=$value ** 2))
echo " the square of $value1 is $value2 !"
fi3.2 用於高階字串處理功能的雙方括號
#!/bin/bash
if [[ $username == bi* ]]
then
echo "hi $username !"
else
echo "$username is not existed !"
fi雙方括號提供了test命令未提供的另乙個特性,即模式匹配。
雙等號將右邊的字串 bi* 視為乙個模式,並應用模式匹配規則。上面示例表示雙方括號命令$username環境變數進行匹配,看它是否以字母r開頭,
如果是,執行then後**塊,否則執行else後**塊。
參考資料 《linux命令列與shell指令碼程式設計大全(第三版)》
Shell程式設計 Linux系統環境程式設計之路
函式 別的高階語言都有函式的感念,當然shell程式設計也有這個概念,當寫乙個比較大型的shell程式的時候,如果沒有函式,則會到處都是重複的 當然也可以呼叫別的指令碼,但是速度會比較慢。所以函式是必不可少並且非常重要的乙個東西。定義函式的格式 function name 例子 fun s show...
Linux學習 shell程式設計之變數
shell程式設計之變數 linux shell程式設計基礎中的變數。包括bash變數的分類和各變數的詳細使用,如 使用者自定義變數 環境變數 語系變數 位置引數變數和預定義變數。1 什麼是bash變數?變數 計算機記憶體單元,其中存放的值可以更改!bash變數就bash中的變數2 變數有哪些分類,...
Linux下的shell程式設計
前提 shell環境pdksh和bash ubuntu下預設的shell環境是bash 語法篇 一 變數 1.變數分為三種型別 環境變數 內部變數和使用者變數 其中環境變數和內部變數不需要使用者定義,可以直接使用。環境變數 由系統定義,使用者不需要定義但可以改變變數的值。內部變數 由系統提供的一種特...