Bash Shell中的特殊位置變量及其應用shell
衆所周知bash shell中有許多特殊的位置變量,靈活使用它們能夠更好地發揮Shell腳本的功用。vim
即位置變量:$1,$2,...來表示,用於讓腳本在腳本代碼中調用經過命令行傳遞給它的參數bash
特殊變量:$?, $0,$*,$@,$#, $$測試
---------------- 具體解析 -----------------------------spa
$? : 用於檢測上一條命令的返回碼,0表明成功,1-255表示失敗命令行
$0 : 表示命令自己3d
$* : 表傳遞給腳本的全部參數,所有參數合爲一個字符串blog
$@ : 表傳遞給腳本的全部參數,每一個參數爲獨立字符串進程
$# : 傳遞給腳本的參數的個數ip
$$ : 獲取當前執行的Shell腳本的進程號
爲了更好理解,我編寫以下腳本進行測試,注意$10要括號括起來才能識別。
[root@Franklin13 ~]# echo $SHELL
/bin/bash
[root@Franklin13 ~]# vim test_arg.sh
[root@Franklin13 ~]# bash test_arg.sh {a..z}
1st arg is a
2st arg is b
10st arg is j
All arg 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
All arg 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
The arg number is 26
The scriptname is test_arg.sh
[root@Franklin13 ~]#
實戰1: 活用$1來編寫一個自動取ip的腳本
首先用以下命令來截取ip, 成功了
[root@Franklin13 ~]# ifconfig ens33|grep -w "inet"|tr -s ' ' %|cut -d% -f3 (tr -s ' ' %表示先壓縮全部重複的空格到只留一個再轉換爲%)
192.168.1.19
再經過調用$1來使這條命令能夠用於一個腳原本快速查ip。
[root@Franklin13 ~]# ./get-ip.sh lo
The ip is 127.0.0.1
Thank you for using!
[root@Franklin13 ~]# ./get-ip.sh ens33
The ip is 192.168.1.19
Thank you for using!
[root@Franklin13 ~]# ./get-ip.sh virbr0
The ip is 192.168.122.1
Thank you for using!
--------------------------------全文完-----------------------------------