查看使用shell
臨時環境變量
永久環境變量
/etc/profile中定義 ,所有用戶可用
$HOME/.bash_profile 針對特定用戶有效
預定義環境變量
如$PATH、$HOME、$SHELL、$PWD
創建SHELL
執行shell腳本
sh file.sh 或者讓腳本有執行權限(絕對路徑或者相對路徑)
變量規則
1.變量名稱可以是字母、數字、下劃線組成,但是不能以數字開頭,環境變量建議大寫
2.變量的類型默認都是字符串類型
3.變量用=連接值,等號兩邊不能有空格
4.變量的值如果有空格,需要使用單引號或者雙引號
變量分類
自定義變量,環境變量,位置參數變量,預定義變量(可以用set查看系統存在的所有變量,釋放變量unset,用readonly修飾的變量不能刪除)
變量調用
在變量名前面加上:$
變量賦值
1.STR="hello"
2.A=`ls -la` 或者 $(ls -la) 將執行結果賦給變量 數字:a=$((4+5))
3.A=$STR
4.a="$aa"456 a=${aa}789
環境變量(在當前shell和子shell都有效)
export 變量名=變量值
位置參數變量
$0 命令本身 $1-9代表第1個到第9個參數
$* 代表命令行中所有的參數,以"$1 $2 $3 $4"的形式輸出
$@ 代表命令行的所有參數,以“$1”“$2”"$3"的形式輸出
$# 代表命令行參數的個數
$*和$@相同與 不同點:
都表示傳遞給函數或者腳本的參數,不被雙引號包含時,都以"$1" "$2" ..."$n"的形式輸出
當被雙引號包含時,“$*”會將參數作爲一個整體,而"$@"會將各個參數分開
eg:
結果:
預定義變量
$? 執行上一個命令的返回值,返回0代表成功,非0表示失敗
$$ 當前進程的PID,即當前執行腳本生成的進程號
$! 後臺運行的最後一個進程的進程號PID,&
read
read 【-p提示語句】【-n字符個數】【-t等待時間】【-s隱藏輸入】
$()和${}的區別
$()和``的作用一樣,都表示優先執行的命令 eg:echo $(ls a)
${}是取變量
$(( )) 是適用於數值運算 eg:$((1+2))
內置test命令
1.[ expression ] 注意:首尾都有一個空格 2.test expression
測試範圍:整數,字符串,文件
當表達式結果爲真時,test返回值是0,否則爲非0,$?的結果爲0,否則爲非0
字符串測試
[ str1 == str2 ] 測試是否相等
[ str1 != str2 ] 測試是否不相等
[ str1 ] 測試是否不爲空
[ -n str1 ] 測試是否不爲空
[ -z str1 ] 測試是否爲空
整數測試
[ int1 -eq int2 ] 測試是否相等
[ int1 -ge int2 ] 測試是否>=
[ int1 -gt int2 ] 測試是否大於>
[ int1 -le int2 ] 測試是否<=
[ int1 -lt int2 ] 測試是否小於<
[ int1 -ne int2 ] 測試是否不相等
文件測試
[ -d file ] 是否爲目錄
[ -e file ] 文件是否存在
[ -f file ] 文件是否常規文件
[ -L file ] 文件存在並且是一個符號鏈接
[ -r file ] 是否可讀
[ -w file ] 是否可寫
[ -x file ] 是否可執行
多重條件測試
條件1 -a 條件2 並且的關係 條件1 -o 條件2 或的關係 ! 取反
流程if控制語句
if [ ]
then
//TODO
elif [ ]
then
//TODO
else
//TODO
fi
流程case控制語句
case $變量 in
1)
echo ""
;;
2)
echo ""
;;
*)
echo ""
esac
流程for控制語句
第一種:
for N in 1 2 3
do
//TODO
done
第二種
for((i=0;i<=5;i++))
do
//TODO
done
流程while控制
第一種
while [ ]
do
//TODO
done
第二種
自定義函數
說明:1.函數需要先定義,在調用
2.ruturn value 來獲取函數的返回值
3.函數在當前shell中執行,可以使用腳本中的變量
腳本測試
sh -x script 執行該腳本並顯示所有變量的值
sh set -x script 對部分腳本測試
sh -n script 不執行腳本,只是檢查語法,返回語法錯誤
sh -v script 執行並顯示腳本