国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

Shell編程之特殊變量和擴展變量詳解

2019-10-26 18:58:34
字體:
來源:轉載
供稿:網友

特殊變量

在Shell中的特殊變量主要分別兩種位置參數變量、狀態變量兩種。

位置參數變量

Shell中的位置參數變量主要是指0、0、1、$#等,主要用于從命令行、函數或腳本執行等地方傳遞參數。詳細說明如下所示:

$0:獲取當前執行的Shell腳本的文件名,如腳本中包含路徑,則輸出也包括路徑 $n:獲取當前執行的Shell腳本的第n個參數值,如n>9,則需要使用用大括號,如${10},各參數間用空格進行分隔 $#:獲取當前執行的Shell腳本傳入參數的總個數 $*:獲取當前執行的Shell所有傳入參數,如不加引號則與$@功能相同,如果添加雙引號**"∗",則表示將所有傳入參數視為單個字符串∗∗,相當于"∗",則表示將所有傳入參數視為單個字符串∗∗,相當于"1 223" $@:獲取當前執行的Shell所有傳入參數,**如不加引號則與$*功能相同,如果添加雙引號"@",則表示將所有傳入參數視為獨立的字符串∗∗,相當于"@",則表示將所有傳入參數視為獨立的字符串∗∗,相當于"1" "2""2""3"

當"∗"和"∗"和"@"都添加雙引號時,兩者的功能有所區別;如不加,則功能相同,無區別。

位置參數變量示例

1、示例一:

[root@localhost Test]# cat para.sh#!/bin/bashecho $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} ${14} ${15}echo '$0 is:' $0echo '$1 is:' $1echo '$12 is:' ${12}echo '$# is:' $#echo '$* is:' $*echo '"$*"is:' "$*"echo '$@ is:' $@echo '"$@"is:' "$@"# 輸出結果[root@localhost Test]# bash ~/Test/para.sh {a..z}a b c d e f g h i j k l m n o$0 is: /root/Test/para.sh$1 is: a$12 is: l$# is: 26$* is: a b c d e f g h i j k l m n o p q r s t u v w x y z"$*"is: a b c d e f g h i j k l m n o p q r s t u v w x y z$@ is: a b c d e f g h i j k l m n o p q r s t u v w x y z"$@"is: a b c d e f g h i j k l m n o p q r s t u v w x y z

1、傳入的參數個數多于腳本定義的參數時,則多出的參數會忽略

2、傳入的參數中如使用雙引號,則會當作一個參數值進行傳遞

3、位置參數如大于9,需要使用${}進行傳遞

2、示例二:

[root@localhost Test]# cat testposition.sh #!/bin/bashecho '$# $1 $2 $3 $* $@'echo $# $1 $2 $3 $* $@echo "************"echo '$*'for tmp in $* do echo $tmp doneecho "************"echo "@@@@@@@@@@@@"echo '$@'for temp in $@ do echo $temp doneecho "@@@@@@@@@@@@"echo '"*"*"*"*"*"*'echo '$*'for i in "$*" do echo $i doneecho '"*"*"*"*"*"*'echo '"@"@"@"@"@"@'echo '$@'for j in "$@" do echo $j doneecho '"@"@"@"@"@"@'[root@localhost Test]# bash testposition.sh "Hello Jack" Welcome "to Shanghai"$# $1 $2 $3 $* $@3 Hello Jack Welcome to Shanghai Hello Jack Welcome to Shanghai Hello Jack Welcome to Shanghai************$* # 未加雙引號,所以會輸出全部參數,則第一個和第三個參數會拆開HelloJackWelcometoShanghai************@@@@@@@@@@@@$@ # 未加雙引號,所以會輸出全部參數,則第一個和第三個參數會拆開HelloJackWelcometoShanghai@@@@@@@@@@@@"*"*"*"*"*"*$* # 添加雙引號后,傳入的參數全部當一個參數進行輸出Hello Jack Welcome to Shanghai"*"*"*"*"*"*"@"@"@"@"@"@$@ # 添加雙引號后,傳入的參數全部當獨立的參數進行輸出Hello JackWelcometo Shanghai"@"@"@"@"@"@            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 勐海县| 石家庄市| 孙吴县| 吴桥县| 修武县| 盘山县| 邻水| 子长县| 桃园县| 阿巴嘎旗| 祥云县| 福海县| 原平市| 锡林郭勒盟| 武安市| 石景山区| 呼图壁县| 扶绥县| 县级市| 莲花县| 彰化县| 泰顺县| 平山县| 安达市| 乐平市| 徐州市| 绥德县| 尤溪县| 廉江市| 丽江市| 青河县| 呈贡县| 山丹县| 通化县| 登封市| 濮阳县| 祁阳县| 新疆| 平罗县| 安多县| 太谷县|