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