變數命名規則:
1、變數名稱可以由字母、數字、下劃線組成,但是不能以數字開頭
2、在bash中變數預設是字串型,如果要進行數值運算,必須指定變數型別為數值型別
3、變數用等號連線,等號兩邊不能有空格
4、變數值中如果有空格,需要使用單引號或者雙引號包括
5、變數得值可以疊加
6、可以將命令得結果賦值給變數
變數的分類
使用者自定義變數:名稱:自定義 作用:自定義 內容:自定義
環境變數(一般大寫):一般對系統起作用,不能更改變數名。 名稱:確定 作用:確定 內容:自定義
位置引數變數:主要是用來向指令碼當中傳遞引數或者資料 名稱:確定 作用:確定 內容自定義
預定義變數:bash中已經定義好的變數。名稱:確定 作用:確定 內容自定義
使用者自定義變數
①變數定義
②變數呼叫
③變數檢視
set [選項]
-u 如果呼叫未宣告變數時會報錯
-x 在命令執行之前會把命令先輸出一次
④變數刪除
環境變數(使用者自定義環境變數)
1、環境變數與使用者自定義變數區別,環境變數可以在子shell中生效,使用者自定義變數只能在當前環境下生效
2、如果使用者自定義環境變數,需要在前加入export
3、env和set命令的區別
set命令可以檢視所有變數,env只能檢視環境變數
4、刪除系統環境變數
unset [名稱]
環境變數(系統自帶的環境變數)
path 變數:系統查詢命令的路徑
例如:將指令碼所在的目錄新增到path路徑上,就可以在任意地方執行指令碼。在執行指令碼時,會自動搜尋path中定義的路徑
位置引數變數
$n n為數字,$0 代表命令本身 1-9代表1到9個引數,10以上要用$
$# 代表命令中所有引數的個數
$* 代表命令中的所有引數,把所有引數看成乙個整體
$@ 代表命令中的所有引數,把每個引數區分對待
案例1
結果
案例2執行:
預定義變數
$? 最後一次執行的命令的返回狀態,如果這個變數的值為0,證明上乙個命令執行正確,如果這個變數的值為非0,則證明上乙個命令執行不正確
$$ 當前程序的程序號pid
$! 後台執行的最後乙個程序的程序號
環境變數配置檔案
⑴source 命令
source 配置檔案 或 . 配置檔案 ,可以直接生效
⑵環境變數的配置檔案
①錄系統時,主要生效的環境變數配置檔案有以下5個
/etc/profile
/etc/profile.d/*.sh
~/.bash_profile
~/.bashrc
/etc/bashrc
注意:/etc目錄下的可以對所有使用者生效
寫在~目錄下的只對當前使用者生效,如寫在臨時使用者目錄下,就只對臨時使用者生效
②戶退出時候呼叫
~/.bash_logout. 比如可以執行一些清除歷史命令的操作
③ 其他配置檔案
常見的如
~/.bash_history檔案,歷史命令儲存檔案
shell變數的定義規則
root misshou a hello root misshou a world root misshou echo a hello root misshou echo a world root misshou a hello bash a hello command not found root...
shell中的命令替換和變數替換
可以用 command 也可以用 command 二者是有區別的,先看一下 command 注意 這裡不是引號,而反引號 下面這個是 command 變數替換可以根據變數的狀態 是否為空 是否定義等 來改變它的值,可以使用的變數替換形式 形式說明 變數本來的值 如果變數 var 為空或已被刪除 un...
shell命令輸出到變數
今天用指令碼來獲取程序id,並給相應程序傳送乙個訊號,shell命令獲得程序id的方法有三種 1.ps a grep cmdname awk 2.pidof cmdname 3.pgrep cmdname 注意,這裡cmdname的雙引號不要。這三種在bash和busybox ash裡面的執行結果稍...