**:
shell 中經常會用到變數的巢狀的情況。比如,單個或多個變數的值作為變數名,再對該變數名取$獲取其內部的變數的情況,這種指令碼寫起來很難搞,還好有eval 命令方便我們處理這種情況。便於理解,先來乙個示例:
#!/bin/basha='my'
b='site'
my_site='my site www.361way.com'
echo a_b is "$a"_"$b"
echo $("$a"_"$b")
web="$a"_"$b"
echo web is $web
eval echo '$'"$a"_"$b"
eval echo '$'
比如上面這個示例,猜猜看它的執行結果是什麼?執行結果如下:
# sh a.sha_b is my_site
a.sh: line 6: my_site: command not found
web is my_site
my site www.361way.com
my site www.361way.com
從上面可以看出$("$a"_"$b")這種寫法會報錯,可以正確取到我們想要的結果可以有兩種寫法:eval echo '$'"$a"_"$b" 或 eval echo '$' 。
eval 這麼神奇,到底是個什麼東東?
eval 命令將會首先掃瞄命令列進行所有的置換,然後再執行該命令。該命令適用於那些一次掃瞄無法實現其功能的變數,該命令對變數進行兩次掃瞄。這些需要進行兩次掃瞄的變數有時被稱為複雜變數。eval命令即可以用於回顯簡單變數,也可以用於回顯複雜變數。
再來個示例,該例中檔案有兩列,第一列為變數名,第二列為變數值,讀取該檔案後將第二列的值賦值給第一列,通過echo $ 就可以獲取後面的value值。如下:
變數名與變數值對映表:# more name_value.txt
site www.361way.com
mail [email protected]
user admin
指令碼內容:
# cat b.sh
#!/bin/bash
while read name value
doeval "$=$"
done < name_value.txt
echo "$site $mail $user"
執行該指令碼,結果如下:
# sh b.shwww.361way.com [email protected] admin
Shell中的函式與變數
方法1 函式名 方法2 function 函式名 bin bash function fun1 fun1 呼叫函式 root server cat function.sh bin bash function fun1 count 1 while count le 5 do fun1 count co...
shell中的變數
只寫了部分常用變數 2018.5.14 環境變數 隨不同環境變化 user pwd path pid root 下 user root quguanwen下 user quguanwen 預定義變數 命令返回值檢視狀態 列出所有位置變數的值 一共載入多少位置變數 位置變數 1 2 3 x 執行指令碼...
shell中的變數
echo 123 passwd stdin yee 一次性給使用者加密碼 變數的定義 變數即在程式執行過程中它的值是允許改變的量 變數是用一串固定的字元來標示不固定的值的一種方法 變數是一種使用方便的佔位符,用於引用計算機記憶體位址,該地 址可以儲存 script 執行時可更改的程式資訊 在 she...