shell變數賦值以及使用

2021-10-05 13:51:23 字數 1511 閱讀 4137

1、變數賦值

定義變數時,變數名不加美元符號,如

name_str="lili"

特別注意:變數名和等號之間不能有空格

其他注意事項與其他語言相通

2、使用變數

使用乙個定義過的變數,只有在變數名前面加美元符號$即可

name_str="lili"

echo $name_str

echo $

注:變數名外面的花括號是可選的,可加可不加,花括號是為了幫助直譯器識別變數邊界,所以加上比較保險

已被定義的變數也可重新被定義

num=1

echo $num

num=2

echo $num

3、位置引數

$:輸入的第n個引數 ($0表示指令碼名字)

$#:輸入引數的數量

$@:輸入的所有引數

$!:輸入的最後乙個引數

$?:上乙個命令的返回值(用於在指令碼中判斷之前命令的執行狀態,任何非0 的返回都非正常執行)

4、陣列

陣列元素用空格分隔開

陣列名=(值1 值2 值3 值n)

array_name=(value0 value1 value2)

讀取陣列

$(陣列名[下標])

5、唯讀變數

使用readonly命令可以將變數定義為唯讀變數,唯讀變數的名不能被改變

declare -r n=10

readonly n=10

使用演示:

count=1

readonly count

count=2

-bash: count:唯讀變數

6、刪除變數

變數刪除後不能再使用,unset命令不能刪除唯讀變數

shopt -s -o nounset 設定先申明再使用

uset 釋放變數和函式記憶體

num=222

unset num

echo $num

沒有任何輸出

7、函式中的變數

若不宣告local,則函式中的變數也為全域性變數

若宣告local(local var=100),則變數的作用域只在函式內

8、字串

單引號str='abcdefg'

單引號裡的任何字元都會以原樣輸出,單引號中的變數是無效的

雙引號 (雙引號裡可以有變數,也可以出現轉譯字元)

[root@localhost ~]# your_name='123'

[root@localhost ~]# str="hello\"$your_name\"! \n"

[root@localhost ~]# echo -e $str

hello"123"!

9、獲取字串長度

str="abcd"

echo $

輸出410、提取字串

str="abcd"

echo $

輸出bcd

shell變數以及如何使用變數

shell變數 變數 記憶體空間 增加指令碼的靈活性,適用性 型別 自定義變數 環境變數 path 特殊變數 自定義變數 1 宣告變數 變數名稱 變數值 變數名稱規範 只能由數字 字母 下劃線組成 不能以數字開頭 root shell name tom 2 呼叫變數的值 變數名稱 變數名稱後緊跟數字...

shell中使用EOF賦值變數

看事容易做事難,事非經過不知難。平時看部落格的時候以為 eof 這就是可以多行輸入,確實是這樣!因 sql 語句都較長,且有換行,直接放命令列執行出錯,於是想到用eof,先把sql語句寫好賦值給乙個變數,然後通過變數引用。想法很好,做的時候卻遇到問題了,怎麼也無法把這個sql語句賦值到變數上,折騰了...

shell 變數定義 變數賦值

在 shell 中,當第一次使用某變數名時,實際上就定義了這個變數。建立和設定變數的語法 varname varvalue如果沒有給出變數值,則變數會被賦予乙個空字串。注意,在賦值操作符 的周圍不要有任何空格,像下面這三種寫法會報錯 varname varvalue varname varvalue...