shell 變數命令規則和分類

2022-07-31 01:45:08 字數 2422 閱讀 9725

變數命名規則:

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裡面的執行結果稍...