亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Linux Shell > 正文

Shell編程之特殊變量的筆記小結

2020-07-27 18:49:17
字體:
來源:轉載
供稿:網友

$0 $# $n-->$[1..9] $* $@

1、在shell中存在著一些特殊而又重要的變如:$1 $0 $#,我們稱為特殊的位置變量要從命令行,函數,腳本,等傳遞參數時,就需要在shell腳本中使用位置參數變量

  1. $0:顯示當前的腳本文件名,如果在執行腳本時添加了路徑,那么全部都會輸出
  2. $n:獲取當前執行的shell腳本的第n個參數值比如:[n=1..9],如果N大于9那么就要使用{}來定義 比如${10}
  3. $#:獲取當前shell腳本后面接的參數的個數
  4. $*:獲取當前腳本的參數,不加引號和$@是一樣的 加了引號;例如"$*" 則表示單個字符串。相當于"$1 $2 $3"
  5. $@:同樣也是獲取當前shell的參數,不加引號和$*是一樣的,那么加了引號如:"$@" 表示將所有的參數視為不同獨立的字符串,相當于"$1" "$2"..

總結:$*和$@不加雙引號 是沒有任何區別的,有雙引號兩者就有區別

1)$1 $2 特殊變量實戰

[root@yankerp src]# cat test.sh #查看腳本的內容 #!/bin/bash echo $1   ---<定義了$1 [root@yankerp src]# source test.sh yankai #執行的腳本的時候將yankai賦值給腳本中的1 yankai         #輸出yankai [root@yankerp src]# 

例2:

[root@yankerp src]# cat test.sh #腳本內容 #!/bin/bash echo $1 [root@yankerp src]# source test.sh zhangsan lisi #zhansgan lisi是兩個字符串以空格分割 zhangsan      #只輸出了zhangsan,因為腳本中只定義了$1 [root@yankerp src]#  

例3:

[root@yankerp src]# cat test.sh #查看腳本的內容 #!/bin/bash echo $1 [root@yankerp src]# source test.sh "zhangsan lisi" #加雙引號表示一個字符串參數 zhangsan lisi    #最后輸出結果為zhangsan lisi [root@yankerp src]# 

例4:在腳本中添加$1 $2測試:

[root@yankerp src]# cat test.sh #查看腳本的內容 #!/bin/bash echo $1 $2    定義了$1 $2 [root@yankerp src]# source test.sh zhangsan lisi #在執行腳本的時候定義了兩個字符串 zhangsan lisi    #說明 zhangsan賦值給了$1 lisi賦值給了$2 輸出結果為 zhangsan lisi [root@yankerp src]# 

同時也可以這樣加雙引號 如下:

[root@yankerp src]# cat test.sh #查看腳本的內容 #!/bin/bash echo $1 $2 [root@yankerp src]# source test.sh "zhangsan lisi" yankai #""表示一個字符串  zhangsan lisi yankai  #輸出結果 [root@yankerp src]# 

2)當我們一個個的輸入echo $1---15時會感覺很慢我們可以使用以下命令來接收命令傳遞的15個參數

[root@yankerp src]# echo /${1..15} $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 

將輸出的內容導入到test.sh文件中

[root@yankerp src]# echo /${1..15} > test.sh  [root@yankerp src]# cat test.sh  $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 [root@yankerp src]# 

我們在腳本第一行加入echo

echo $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 

3)打印26個字母如下:

[root@yankerp src]# echo {a..z}  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 

傳入26個字母a-z 作為26個參數

[root@yankerp src]# cat test.sh  echo $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 #腳本內容 [root@yankerp src]# source test.sh {a..z}  #傳入26個字母 a b c d e f g h i a0 a1 a2 a3 a4 a5   #位置參數大于9后,輸出的內容就不對了 [root@yankerp src]# 

當位置參數大于9時 上面已經提到了我們可以使用{}來定義如下:

[root@yankerp src]# cat test.sh  echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} ${14} ${15} 

再次?執行

[root@yankerp src]# source test.sh {a..z} a b c d e f g h i j k l m n o 

4)$0特殊變量實戰

[root@yankerp src]# cat y.sh  #!/bin/bash echo $0 

當我們不帶路徑運行腳本,它會打印腳本的名稱,如下:

[root@yankerp src]# sh y.sh  y.sh 

當我們帶絕對路徑來執行腳本時,它會輸出路徑+腳本名

[root@yankerp src]# sh /usr/local/src/y.sh  /usr/local/src/y.sh 

介紹dirname ---- basename

[root@yankerp src]# dirname /usr/local/src/y.sh  /usr/local/src [root@yankerp src]# basename /usr/local/src/y.sh  y.sh 

?dirname功能:獲取腳本的路徑
?basename:獲取腳本的名稱

例如:

[root@yankerp src]# cat y.sh  #!/bin/bash dirname $0 basename $0 [root@yankerp src]# sh /usr/local/src/y.sh  /usr/local/src y.sh [root@yankerp src]# 

5)$#特殊變量獲取傳參個數實踐

[root@yankerp src]# cat test.sh  echo $1 $2 $3 $4 $5 $6 $7 $8 $9  < 9個位置參數變量 echo $#  <----加入$# [root@yankerp src]# source test.sh {a..z}  <傳入26個字符 a b c d e f g h i  -----<只接收9個變量 26 ----<傳入26個字符。因此這里顯示26 [root@yankerp src]# 

實例1:條件表達式判斷語句如下:

#!/bin/bash [ $# -ne "2" ] && {    #如果用戶輸入的傳參個數不等于2  echo "請輸出正確的數值" #那么輸出此信息  exit 1         #隨后退出腳本 } echo "輸入正確"      #如果輸入的傳參個數是2 那么就輸出此信息 

運行腳本如下:

[root@yankerp src]# sh p.sh  請輸出正確的數值 [root@yankerp src]# sh p.sh zhangsan lisi 輸入正確 [root@yankerp src]# 

IF語句判斷如下:

#!/bin/bash if [ $# -ne "2" ]   -------如果輸入的傳參個數不是2  then         ------那么    echo "/usr/local/src/ $0 請輸入正確的值"  --輸出一個/usr/local---路徑加$0 $0表示輸出運行腳本的名稱  else    echo "輸入正確" fi 

執行如下:

[root@yankerp src]# sh p.sh  /usr/local/src/ p.sh 請輸入正確的值 [root@yankerp src]# sh p.sh zhangsan lisi 輸入正確 [root@yankerp src]# 

$* $@后續再出?。?!

二、shell進程中特殊狀態變量

$?    $$(不常用)   $!(不常用)    $_(不常用)$$ 和 $!都是獲取腳本進程號PID,但是有所不同這里不在演示

1、$?特殊變量實踐

[root@yankerp ~]# pwd /root [root@yankerp ~]# echo $? 0 [root@yankerp ~] 

當我們執行每一條命令結束后,echo $? 如果它輸出0那么就代表成功

[root@yankerp ~]# sfkljlfsdfsdf bash: sfkljlfsdfsdf: 未找到命令... [root@yankerp ~]# echo $? 127 [root@yankerp ~]# 

非0則代表失敗。

案例:安裝Apache判斷是否安裝成功

[root@yankerp ~]#yum install httpd -y

案例2:通過腳本控制命令及腳本執行返回值

#!/bin/bash if [ "$#" -ne "3" ]  then   echo "/bin/bash $0" 請輸出正確字符   exit 120  ---<如果以上不成立 并指定120值退出腳本  else   echo "輸入正確" fi 

運行如下:

[root@yankerp ~]# sh k.sh  /bin/bash k.sh 請輸出正確字符 [root@yankerp ~]# echo $? 120 [root@yankerp ~]#  [root@yankerp ~]# sh k.sh zhangsan lisi wangwu 輸入正確 [root@yankerp ~]# echo $? 0 [root@yankerp ~]#  

聲明:以上文章是<<跟著老男孩學Linux運維Shell編程實戰>>第四章看完的總結;

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内精品400部情侣激情| 美女国内精品自产拍在线播放| 亚洲性生活视频| 国产美女精彩久久| 久久香蕉国产线看观看网| 亚洲国产欧美一区| 亚洲国产精品国自产拍av秋霞| 欧美在线视频一二三| 欧美日韩激情美女| 亚洲欧美制服丝袜| 国产+成+人+亚洲欧洲| 国产精品视频26uuu| 国产精品视频永久免费播放| 黑丝美女久久久| 国产精品老女人视频| 国产精品99导航| 国产精品久久久久久久美男| 国产自摸综合网| 久久国产视频网站| 亚洲高清一二三区| 久久久亚洲天堂| 中文字幕一区二区精品| 久久国产精品亚洲| 国产精品亚洲欧美导航| 在线视频亚洲欧美| 久久精品视频99| 亚洲天堂第一页| 黄色成人在线播放| 亚洲黄在线观看| 欧美精品福利在线| 欧美在线视频一二三| 亚洲新声在线观看| 欧美二区乱c黑人| 神马国产精品影院av| 国产精品美女在线观看| 日韩免费av在线| 国产欧美日韩综合精品| 亚洲精品电影在线观看| 国产精品永久免费视频| 国产经典一区二区| 国产97在线视频| 国产精品看片资源| www.国产一区| 黑人欧美xxxx| 国产成人精品久久| 色狠狠av一区二区三区香蕉蜜桃| 欧美成人在线免费| 黑人巨大精品欧美一区免费视频| 亚洲jizzjizz日本少妇| 亚洲欧美第一页| 亚洲香蕉伊综合在人在线视看| 中文字幕v亚洲ⅴv天堂| 久久综合五月天| 欧美午夜无遮挡| 国产成人欧美在线观看| 这里只有精品视频在线| 亚洲a在线观看| 国模极品一区二区三区| 久久中国妇女中文字幕| 一本一本久久a久久精品综合小说| 粗暴蹂躏中文一区二区三区| 黄色一区二区在线观看| 日韩精品在线观看一区| 欧美日韩亚洲一区二区| 亚洲在线免费看| 亚洲精品一区二区三区婷婷月| 在线观看日韩www视频免费| 成人xxxx视频| 亚洲福利在线播放| 国产精品久久99久久| 欧美日韩aaaa| 日本高清视频精品| 色综合天天综合网国产成人网| 久久香蕉国产线看观看av| 伊人久久久久久久久久久| 亚洲欧美激情四射在线日| 亚洲欧洲自拍偷拍| 国产综合久久久久久| 日韩精品在线观看一区| 中文字幕日韩av综合精品| 国产成人aa精品一区在线播放| 91精品在线影院| 国产乱人伦真实精品视频| 韩国19禁主播vip福利视频| 成人免费视频xnxx.com| 青青久久av北条麻妃海外网| 久久精品视频亚洲| 欧美亚洲国产成人精品| 北条麻妃一区二区在线观看| 国产成人精品视频在线| 日韩在线视频免费观看| 91九色国产社区在线观看| 久久天天躁狠狠躁夜夜爽蜜月| 国产精品青草久久久久福利99| 亚洲色图35p| 91精品国产91久久久久久不卡| 日韩欧美有码在线| 欧美午夜片在线免费观看| 欧美电影在线免费观看网站| 日韩a**中文字幕| 不卡av电影院| 韩国19禁主播vip福利视频| 久久久精品久久| 久久视频在线看| 在线观看中文字幕亚洲| 6080yy精品一区二区三区| 亚洲日本欧美中文幕| 欧美黑人巨大xxx极品| 日韩免费高清在线观看| 久久中文字幕视频| 欧美中文字幕在线| 在线播放日韩欧美| 亚洲国内精品视频| 在线精品播放av| 韩国一区二区电影| 在线看日韩欧美| 91精品久久久久久久久久入口| 欧美日韩国产色| 国产欧美韩国高清| 久久人人爽人人爽人人片av高请| 欧美大人香蕉在线| 5278欧美一区二区三区| 性亚洲最疯狂xxxx高清| 亚洲无线码在线一区观看| 亚洲欧美国产精品专区久久| 精品女同一区二区三区在线播放| 92看片淫黄大片欧美看国产片| 国产精品丝袜久久久久久不卡| 在线观看国产精品淫| 欧美精品第一页在线播放| 97不卡在线视频| 亚洲精品永久免费精品| 欧美成人精品影院| 国产精品三级久久久久久电影| 在线精品国产成人综合| 欧美日本中文字幕| 久久久999成人| 日韩电影中文 亚洲精品乱码| 欧美制服第一页| 欧美性视频网站| 2019中文字幕全在线观看| 亚洲一区国产精品| 久久精品国产91精品亚洲| 久久福利网址导航| 韩国精品久久久999| 在线视频欧美性高潮| 国产精品久久久久久久av电影| 国产视频精品xxxx| 久久久免费观看视频| 久久综合网hezyo| 欧美情侣性视频| 亚洲黄色av网站| 中文字幕精品一区久久久久| 日韩欧美在线第一页| 欧美极品少妇xxxxⅹ免费视频| 欧美另类第一页| 国产最新精品视频| 欧美精品免费在线| 97视频在线观看播放| 欧美精品久久久久久久久| 久久精品国产亚洲| 精品欧美激情精品一区| 欧美一区二区三区免费观看| 91欧美精品成人综合在线观看|