真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Shell編程中特殊變量的示例分析-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)Shell編程中特殊變量的示例分析的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)專注于網(wǎng)站建設(shè),為客戶提供成都網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)開發(fā)服務(wù),多年建網(wǎng)站服務(wù)經(jīng)驗(yàn),各類網(wǎng)站都可以開發(fā),成都品牌網(wǎng)站建設(shè),公司官網(wǎng),公司展示網(wǎng)站,網(wǎng)站設(shè)計(jì),建網(wǎng)站費(fèi)用,建網(wǎng)站多少錢,價(jià)格優(yōu)惠,收費(fèi)合理。

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

1、在shell中存在著一些特殊而又重要的變?nèi)纾?1 $0 $#,我們稱為特殊的位置變量要從命令行,函數(shù),腳本,等傳遞參數(shù)時(shí),就需要在shell腳本中使用位置參數(shù)變量


  1. $0:顯示當(dāng)前的腳本文件名,如果在執(zhí)行腳本時(shí)添加了路徑,那么全部都會輸出

  2. $n:獲取當(dāng)前執(zhí)行的shell腳本的第n個(gè)參數(shù)值比如:[n=1..9],如果N大于9那么就要使用{}來定義 比如${10}

  3. $#:獲取當(dāng)前shell腳本后面接的參數(shù)的個(gè)數(shù)

  4. $*:獲取當(dāng)前腳本的參數(shù),不加引號和$@是一樣的 加了引號;例如"$*" 則表示單個(gè)字符串。相當(dāng)于"$1 $2 $3"

  5. $@:同樣也是獲取當(dāng)前shell的參數(shù),不加引號和$*是一樣的,那么加了引號如:"$@" 表示將所有的參數(shù)視為不同獨(dú)立的字符串,相當(dāng)于"$1" "$2"..


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

1)$1 $2 特殊變量實(shí)戰(zhàn)


[root@yankerp src]# cat test.sh #查看腳本的內(nèi)容 
#!/bin/bash 
echo $1   ---<定義了$1 
[root@yankerp src]# source test.sh yankai #執(zhí)行的腳本的時(shí)候?qū)ankai賦值給腳本中的1 
yankai         #輸出yankai 
[root@yankerp src]#

例2:


[root@yankerp src]# cat test.sh #腳本內(nèi)容 
#!/bin/bash 
echo $1 
[root@yankerp src]# source test.sh zhangsan lisi #zhansgan lisi是兩個(gè)字符串以空格分割 
zhangsan      #只輸出了zhangsan,因?yàn)槟_本中只定義了$1 
[root@yankerp src]#

例3:


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

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


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

同時(shí)也可以這樣加雙引號 如下:


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

2)當(dāng)我們一個(gè)個(gè)的輸入echo $1---15時(shí)會感覺很慢我們可以使用以下命令來接收命令傳遞的15個(gè)參數(shù)


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

將輸出的內(nèi)容導(dǎo)入到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個(gè)字母如下:


[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個(gè)字母a-z 作為26個(gè)參數(shù)


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

當(dāng)位置參數(shù)大于9時(shí) 上面已經(jīng)提到了我們可以使用{}來定義如下:


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

再次·執(zhí)行


[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特殊變量實(shí)戰(zhàn)


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

當(dāng)我們不帶路徑運(yùn)行腳本,它會打印腳本的名稱,如下:


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

當(dāng)我們帶絕對路徑來執(zhí)行腳本時(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)$#特殊變量獲取傳參個(gè)數(shù)實(shí)踐


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

實(shí)例1:條件表達(dá)式判斷語句如下:


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

運(yùn)行腳本如下:


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

IF語句判斷如下:


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

執(zhí)行如下:

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

Shell編程中特殊變量的示例分析

$* $@后續(xù)再出?。?!

二、shell進(jìn)程中特殊狀態(tài)變量


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


1、$?特殊變量實(shí)踐


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

當(dāng)我們執(zhí)行每一條命令結(jié)束后,echo $? 如果它輸出0那么就代表成功


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

非0則代表失敗。


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


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

Shell編程中特殊變量的示例分析

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


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

運(yùn)行如下:


[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 ~]#

Shell編程中特殊變量的示例分析

感謝各位的閱讀!關(guān)于“Shell編程中特殊變量的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!


網(wǎng)站題目:Shell編程中特殊變量的示例分析-創(chuàng)新互聯(lián)
路徑分享:http://weahome.cn/article/djoghg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部