1.Shell定義變量
Shell定義一個(gè)變量不用聲明俊犯,但是要注意的幾點(diǎn) :1. 首個(gè)字符必為字母闪彼。 2. 中間不能有空格敬拓。3. 不能用標(biāo)點(diǎn)啼辣。4. 不能用shell關(guān)鍵字(在bush中輸入help看關(guān)鍵字)啊研。
例如:
x=8
hello="Hello World!"
可以用一個(gè)變量給另一個(gè)變量賦值:
x=8
y=$x
z=$x+5
2. 變量訪問(wèn) $
訪問(wèn)其實(shí)上邊已經(jīng)用到了,就是在變量前加個(gè)$
鸥拧。例如:
hello="Hello World!"
echo $hello
skill="Shell"
echo "I'm good at ${skill}Sript!"
- 通常用函數(shù)
echo
來(lái)顯示某個(gè)變量 - 變量加
{}
是可選的党远,有的場(chǎng)合為避免與其他字符混淆,幫助編譯器識(shí)別變量的邊界富弦。上句中如果沒(méi)有{}
則編譯器會(huì)將¥skillScript當(dāng)成一個(gè)變量
3.只讀變量
顧名思義沟娱,看個(gè)例子就明白了:
hello="Hello World!"
readonly hello #聲明成只讀變量
4.刪除變量 unset
就是unset
指令,刪除后不能再次使用腕柜,unset
不能刪除只讀變量济似。
#!/bin/bash
hello="Hello World!"
unset hello
echo hello #這里沒(méi)有任何輸出
5.添加環(huán)境變量 export
用export可讓變量當(dāng)臨時(shí)的環(huán)境變量矫废。
export 變量名=變量
該變量只在當(dāng)前的Shell或子Sell中有效,一旦關(guān)閉Shell變量就失效了砰蠢。如果需要設(shè)置永久的環(huán)境變量蓖扑,則需要編輯配置文件/etc/profile
。
內(nèi)部變量
變量 | 說(shuō)明 |
---|---|
$0 |
當(dāng)前腳本名字 |
$n |
傳遞給腳本或函數(shù)的參數(shù) |
$# |
傳遞給腳本或函數(shù)的參數(shù)個(gè)數(shù) |
$* |
傳遞給腳本或函數(shù)的所有參數(shù) |
$@ |
傳遞給腳本或函數(shù)的所有參數(shù) 被"" 包含時(shí)台舱,與$* 稍有不同 |
$? |
上個(gè)命令的退出狀態(tài)或函數(shù)的返回值 |
$$ |
當(dāng)Shell進(jìn)程ID 對(duì)于Shell腳本就是這些腳本所在進(jìn)程ID |
常見(jiàn)內(nèi)部變量
變量 | 說(shuō)明 |
---|---|
$0 |
當(dāng)前腳本名字 |
$n |
傳遞給腳本或函數(shù)的參數(shù) |
$# |
傳遞給腳本或函數(shù)的參數(shù)個(gè)數(shù) |
$* |
傳遞給腳本或函數(shù)的所有參數(shù) |
$@ |
傳遞給腳本或函數(shù)的所有參數(shù) 被"" 包含時(shí)律杠,與$* 稍有不同 |
$? |
上個(gè)命令的退出狀態(tài)或函數(shù)的返回值 |
$$ |
當(dāng)Shell進(jìn)程ID 對(duì)于Shell腳本就是這些腳本所在進(jìn)程ID |
例如查看當(dāng)前Shell進(jìn)程ID指令:
echo $$ #顯示 55754