一 bash的變量類型
bash變量類型:
環境變量
本地變量(局部變量)
位置變量
特殊變量
bash中的變量分爲四種 一 是環境變量 二 是本地變量 三是局部變量,每種變量的作用域不一樣。環境變量作用於當前shell 及其子shell 。本地變量 緊作用於當前shell。局部變量緊作用於當前shell中一段代碼。
1.1 環境變量的定義 export VALNAME=VALUE
注意:***命令行執行的腳本程序都是要新建一個進程,其執行過程就是開啓子shell,因此環境變量對子進程是有效的。但是系統默認執行的腳本 是不需要開開啓子shell的,但是他是需要定義環境變量的!
1.2 本地變量的定義 VALNAME=VALUE
1.3 局部變量的定義 local VALNAME=VALUE
1.4位置變量
$1 $2 $3 第一個位置 第二個位置 第三個位置
5特殊變量(系統變量)
$? 表示上一個命令的執行狀態返回值
執行成功0
執行錯誤1-255
其中1、2、127系統已經定義了 其他的用戶可以自己定義錯誤代碼
二變量的引用
${} 其中{}可以省略 在不引起變量名稱混淆的前提下{}可以省略
例如 ANIMIAL=pig
echo “there are some $ANIMINALs ”
此時就會引起變量名的混淆,就必須添加{},如果引用了一個沒有賦值的變量名 則會顯示空
NAME=jim
echo “my name is $NAME” 雙引號弱引用可以變量替換(引用)
echo’my name is $NAME’ 單引號強引用不能用於變量替換(引用)
三 系統中變量的查看
1查看系統中所有環境變量和本地變量 set
2 查看系統中所有環境變量 printenv ,export ,env
腳本的執行
#!/bin/bash
腳本的第一行必須是指明腳本執行的解釋器的路徑
腳本編寫完成後有兩種方式執行腳本
第一種是直接使用 bash 命令的方式執行
如 bash /tmp/onebash.sh
第二種是給文件執行權限 在輸入文件的路徑來執行,或者是將文件的路徑添加到$PATH的路徑中去後,在直接執行文件名來執行!
二 條件測試類型
1 整數測試
2字符串測試
3文件測試
條件測試的表達式一般的三種形式 1 [空格expression空格]
2[[空格expression空格]]
3 test expression
1整數測試 -eq 測試兩個整數是否相等,等爲真,不等爲假
-ne 測試兩個整數是否不等,不等爲真,等爲假
-gt 大於
-ge 大於等於
-lt 小於
-le 小於等於
2字符串測試
== 等於
!= 不等於
-n 測試字符串是否不爲空,不爲空爲真,空爲假
-z 測試字符串是否爲空 空爲真 不空爲假
3文件測試 實例
1[ -e /etc/inittab ] 測試是否存在
2[ -r /etc/inittab ] 測試當前登錄的用戶是否具有讀權限
3[ -w /etc/inittab ]測試當前登錄的用戶是否具有寫權限
4[ -x /etc/inittab ]測試當前登錄的用戶具有執行權限
5[ -f /etc/inittab ]測試該文件是否是普通文件
6[ -d /etc/inittab ]測試該文件是否是目錄
三命令間的邏輯判斷
&& 與 || 或
&& 操作是 第一個爲真時 第二個一定會執行
第一個爲假時 第二個一定不執行
|| 操作時 第一個爲假時 第二個一定會執行
第一個爲真是 第二個一定不會執行
注意:&& 或者|| 都是取的命令執行後的返回值進行判斷 而不是命令的執行結果
注意 所有變量的名稱只能是 字母數字和下劃線 爲組合且不能以數字開頭 不應該與系統中的已有的變量同名
id user1 &> /dev/null && echo the user is exist || useradd user1
如果用戶不存在 則添加 並給其密碼 否則顯示已存在
! id user2 &> /dev/null && useradd user2 && echo "user2" | passwd --stdin user2 &> /dev/null || echo user2 is exist
2判斷一個用戶的uid 是否爲0 如果是 顯示爲管理員 否則顯示爲普通用戶
[ `id -u root` -eq 0 ] && echo the current user is admin || echo the current user is common
四算數運算
shell 中如何進行算術運算
A=3 B=5
1 let C=$A + $B
2 C=$[$A+$B]
3 C=$(($A+$B))
4 exper 算數表達式 算數表達式中各操作數和運算符之間要有表達式,且要使用反引號
C=`exper $A + $B `