標籤:程式設計語言 local export shell linux-shell
Shell
shell屬弱類型程式設計語言。
強弱的區分:
強:變數在使用前,必須事先聲明,甚至還需要初始
弱:變數使用時聲明,甚至部區分類型
bash變數類型
環境變數
本地變數(局部變數)
位置變數
特殊變數
本地變數:
bash:
VATNAME=VALUE:範圍為整個bash進程
局部變數:
local varname=value;範圍為當前程式碼片段
環境變數:範圍為當前shell進程及其子進程
export varname=value
name=value
export name
”匯出“
位置變數:
$1,$2...
shift
如:
[[email protected] shell]# cat shift.sh
#!/bin/bash
echo $1
shift
echo $1
shift
echo $1
[[email protected] shell]#
[[email protected] shell]# ./shift.sh 1 2 3
1
2
3
[ [email protected] shell]#
特殊變數:
1. $?上一個命令的執行狀態傳回值
程式執行,可能有兩類傳回值
程式執行結果
程式狀態傳回碼(0-255)
0:正確執行
1-255:錯誤執行 1,2,127系統預留
2. $# 參數的個數
3. $* 參數列表
4. [email protected] 參數列表
/dev/null 軟裝置 bit bucket資料黑洞
撤銷變數
unset VARNAME
查看當前shell中變數
set
查看當前shell中的環境變數
set
env
export
指令碼:命令的堆砌,按實際需要,結合命令流程式控制制機制實現的來源程式
shebang:魔數
#!/bin/bash
#開頭為注釋行,不執行
指令碼在執行時會啟動一個子shell進程
命令列中啟動的指令碼會繼承當前shell環境變數
系統自動執行的腳步(非命令列啟動)
引用變數:範圍為當前shell進程及其子進程
${varname}
name=pao;
echo “THe hello word ${name}”,
條件判斷
如果使用者不存在
添加使用者,給密碼並顯示添加成功
否則
顯示如果已經存在,沒有添加
bash中如何?條件判斷?
條件廁所類型
整數測試
字元測試
檔案測試
條件測試的運算式:
【 expression 】
【【expression】】
test expression
整數比較:
-eq:測試兩個整數是否相等 如; $a -eq $b
-ne:測試兩個整數是否相等,不等為真,,相等為假
-gt:測試一個數是否大於另一個數;大於為真,否則為假
-lt:測試一個數是否小與另一個數;小與為真,否則為假;
-ge:大於或等於
-le:小於或等於
檔案測試
-e 檔案 測試檔案是否存在
-f 檔案 測試檔案是否為普通檔案
-d 檔案 測試知道路徑是否為目錄
-r 檔案 測試目前使用者對指定檔案是否有讀取許可權
-w 檔案 測試目前使用者對指定檔案是否有寫入權限
-x 檔案 測試目前使用者對指定檔案是否有可執行許可權
【 -e /etc/inittab 】
命令間的邏輯關係:
邏輯與:&&
第一個條件為假時,第二個條件不用在判斷,最終結果已經有
第一個條件為真時,第二條件必須要判斷
邏輯或:||
條件判斷,控制結構
單分支if語句
if 判斷條件;then
statement1
statement2
....
fi
雙分支if語句
if 判斷語句;then
statement1
statement2
....
else
statement3
statement4
......
fi
多分支if語句
if 判斷條件;then
statement1
......
elif 判斷條件2;then
statement2
......
else
......
fi
測試指令碼是否有語法錯誤
bash -n 指令檔
指令碼逐步執行
bash -x 指令檔
定義指令碼退出狀態代碼
exit:退出指令碼
exit #
如果指令碼沒有明確定義退出狀態代碼,那麼,最後執行的一條命令的退出碼即為指令碼的退出碼
shell中如何進行算術運算
a=3
b=6
1. let 算術運算運算式 算術運算命令
let =c=$a+$b
2. $(算術運算運算式)
d=$[$a+$b]
3. $((算術運算運算式))
d=$(($a+$b))
4. expr命令 算術運算運算式,運算式中各運算元及運算子之間要有空格,而且要使用命令引用
c= `expr $a + $b` 註:‘ ’ 為反單引號``
本文出自 “Linux營運技術交流” 部落格,請務必保留此出處http://linuxzhang.blog.51cto.com/2580498/1657289
初學Linux--shell