在shell中,變數的定義很簡單。
shell變數
定義變數
var="ddiicey"
需要注意的是,與平時我所編寫的高階語言(c、c++、python)等不同,變數名和「=」之間不能有空格。變數名的命名與其他語言一樣都遵循如下規則:
下面給出了shell中一些合法以及非法的變數名示例:
合法的變數名:
runoob
ld_library_path
_var
var2
非法的變數名:
?var
user+name^runoob
除了上述這種顯式的直接賦值方式,還可以用語句給變數賦值,如:
for file in `ls /etc`
以上語句是將/etc下目錄的檔名迴圈出來。請注意,上述符號為「·」,而並不是單引號「『」。
使用變數
使用乙個定義過的變數,只需要在變數名前新增$符號即可,如:
user_name="ddiicey"
echo $user_name
echo $
變數名外面的花括號是可選的,加花括號是為了幫助直譯器識別變數的邊界,如下面的這種情況:
user_name="ddiicey"
echo $user_name
echo $
如果不給skill變數加花括號,寫成echo 「i am good at $skillscript」,直譯器就會把$skillscript當成乙個變數(其未初始化,值為空),**執行結果就不是我們所期望的樣子了。
所以在此,推薦給所有變數加上花括號,這是乙個很好的coding style。
對於已經定義的變數,可以被重新定義,如:
user_name="ddiicey"
echo $
user_name="tiangeng"
echo $
這是合法的,但是該段語句的執行完成後,user_name是第二次定義的值。
唯讀變數
在實際中,為了防止如上對變數重新定義,可以將變數使用readonly命令定義為唯讀變數,這樣就可以防止變數被修改。
#!/bin/bash
user_name="ddiicey"
readonly user_name
user_name="tiangeng"
對於上述指令碼,在執行的時候會報錯,結果如下:
/bin/sh: name: this variable is read only.
刪除變數
使用unset命令可以刪除變數,語法如下:
unset variable_name
unset命令不能刪除readonly唯讀變數。
變數型別
執行shell的時候,會同時存在三種變數:
區域性變數 區域性變數是在指令碼或命令中定義,盡在當前shell例項中有效,其他shell啟動的程式不能訪問區域性變數
環境變數 所有的程式,包括shell啟動的程式,都能訪問環境變數,有些程式需要環境變數來保證其能正常執行。必要的時候shell指令碼也可以定義環境變數。
shell變數 shell變數是有shell程式設定的特殊變數。shell變數中有一部分是環境變數,有一部分是區域性變數,這些變數保證了shell的正常執行。
shell陣列
bash支援一維陣列(不支援多維陣列),並且沒有限定陣列的大小。
與c語言類似,陣列單元的下標由0開始編號。獲取陣列中的元素要使用下標來索引,下標可以是整數或者算術表示式,其值應該大於或等於0.
定義陣列
在shell中,用括號來表示陣列,陣列元素中用「空格」符號分隔開。定義陣列的一般形式為:
陣列名=(值1 值2 ... 值n)
例如:
array_name=(value0 value1 value2)
或者:
array_name=(
value0
value1
value2
)
還可以單獨定義陣列的各個分量:
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
可以不使用連續的下標,而且下標的範圍沒有限制。
讀取陣列
讀取陣列元素值的一般格式是:
$
例如:
valuen=$
使用@符號可以獲取陣列中的所有元素,例如:
echo $
獲取陣列的長度
獲取陣列長度的方法如下:
# 取得陣列元素的個數
length=$
# 或者
length=$
# 取得陣列單個元素的長度
length=$
同樣,知道了陣列元素的個數和陣列單個元素的長度後,就可以知道所佔據記憶體的大小了。
linux複習2(shell指令碼3)
1 設計乙個shell程式,判斷一檔案是不是塊或字元裝置檔案,如果是將其拷貝到 root mydev目錄下。1 echo e please input a filename 2 read filename 3 if c filename then 4 cp filename mydev 5 else...
2 shell命令解析器和環境變數
shell是乙個命令解析器,是用來解析命令的,或者說它是乙個程式,它是我們和linux系統互動的一種工具,當我們在終端輸入一系列的字串時,shell會接收它們,並且再終端顯示出來,當按回車鍵的時候,此時shell就會解析這些字串,並且會去尋找和字串對應的程式,最後執行程式,那麼問題來了,要去 尋找呢...
Mac OS操作相關(2) shell命令篇
本文目錄 本文簡介 在windows下,有cmd供我們編寫命令列,執行一些基本功能 在linux下,有terminater終端供我們編寫命令列,操作一些任務 同樣的,在mac下也提供這樣的乙個命令列執行平台,它也叫做terminater終端 unix shell 讓我們來學習下mac下的termin...