Shell學習 2 Shell變數

2021-08-14 01:28:11 字數 3096 閱讀 1447

在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...