本文共 1530 字,大约阅读时间需要 5 分钟。
子程序僅會繼承父程序的環境變數, 子程序不會繼承父程序的自訂變數!
如你想要讓該變數內容繼續的在子程序中使用
export 變數名稱
===================================================================================
declare 或 typeset 是一樣的功能,就是在『宣告變數的類型』
[root@www ~]# declare [-aixr] variable
選項與參數:
-a :將後面名為 variable 的變數定義成為陣列 (array) 類型
-i :將後面名為 variable 的變數定義成為整數數字 (integer) 類型
-x :用法與 export 一樣,就是將後面的 variable 變成環境變數;
-r :將變數設定成為 readonly 類型,該變數不可被更改內容,也不能 unset
===============================================================================================
利用 source 來執行腳本:在父程序中執行
如果你使用 source 來執行指令那就不一樣了!同樣的腳本我們來執行看看:
[root@www scripts]# source sh02.sh
Please input your first name: VBird
Please input your last name: Tsai
Your full name is: VBird Tsai
[root@www scripts]# echo $firstname $lastname
VBird Tsai <==嘿嘿!有資料產生喔!
竟然生效了!沒錯啊!因為 source 對 script 的執行方式可以使用底下的圖示來說明! sh02.sh 會在父程序中執行的,因此各項動作都會在原本的 bash 內生效!
這也是為啥你不登出系統而要讓某些寫入 ~/.bashrc 的設定生效時,需要使用『 source ~/.bashrc 』而不能使用『 bash ~/.bashrc 』是一樣的啊!
================================================================ $# :代表後接的參數『個數』,以上表為例這裡顯示為『 4 』;
$@ :代表『 "$1" "$2" "$3" "$4" 』之意,每個變數是獨立的(用雙引號括起來);
$* :代表『 "$1c$2c$3c$4" 』,其中 c 為分隔字元,預設為空白鍵, 所以本例中代表『 "$1 $2 $3 $4" 』之意
======================================================== 算數運算
m=4+5
echo $m的結果顯示4+5,視為字串
所以,在Bash shell中使用算數運算,要一下面四種方法進行:
expr(外部指令)
m=`expr 4 + 5`
m=`expr 4 \* 5`
m=`expr $m + 1`
不能運算乘冪羽求餘數(%)
$(())
m=$(( 4 ** 5 ))==>4的5次方
m=$(( $m + 1 ))
m=$(( 5 % 4 ))
$[]
m=$[ 4 \* 5 ]
m=$[ 4 ** 5 ]
m=$[ m + 1 ]
let(內建指令)
let m=m+1(注意與上面的不同處,無空白與$與跳脫)
let m=4+5
let m=4**5 转载地址:http://ttsgi.baihongyu.com/