欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2018年02月02日 10:24:20   作者:789-yankerp  
這篇文章主要介紹了Shell編程之特殊變量的筆記小結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

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

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

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

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

[root@yankerp src]# cat test.sh #查看腳本的內容 
#!/bin/bash 
echo $1   ---<定義了$1 
[root@yankerp src]# source test.sh yankai #執(zhí)行的腳本的時候將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 #在執(zhí)行腳本的時候定義了兩個字符串 
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} 

再次·執(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特殊變量實戰(zhàn)

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

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

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

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

[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 

執(zhí)行如下:

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

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

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

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

1、$?特殊變量實踐

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

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

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

非0則代表失敗。

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

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

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

#!/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編程實戰(zhàn)>>第四章看完的總結;

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

相關文章

  • Linux中grep命令詳解

    Linux中grep命令詳解

    grep命令是Linux系統(tǒng)中最重要的命令之一,功能是從文本文件或管道數據流中篩選匹配的行和數據,如果再配合正則表達式,功能十分強大,是Linux運維人員必備的命令,這篇文章主要介紹了Linux中grep詳解,需要的朋友可以參考下
    2023-02-02
  • Linux-nohup命令使用方法詳解

    Linux-nohup命令使用方法詳解

    在Linux環(huán)境中,nohup命令用于在用戶退出或注銷后繼續(xù)運行命令,當終端關閉時,所有在該終端中運行的進程會收到SIGHUP信號并被終止,但使用nohup可以避免這種情況,本文介紹了nohup的基本用法,感興趣的朋友一起看看吧
    2024-09-09
  • Linux命令學習之用戶切換su,sudo命令詳解

    Linux命令學習之用戶切換su,sudo命令詳解

    在操作過程中需要使用特定的用戶進行特定的操作,多數情況下是因為權限,比如要修改一個文件,只有root用戶有權限修改,那么就要切換到root用戶下進行操作,本文給大家講解Linux命令學習之用戶切換su,sudo命令,感興趣的朋友跟隨小編一起看看吧
    2023-02-02
  • shell傳參并將參數傳遞給sql文件的方法

    shell傳參并將參數傳遞給sql文件的方法

    今天小編就為大家分享一篇shell傳參并將參數傳遞給sql文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 一鍵配置CentOS iptables防火墻的Shell腳本分享

    一鍵配置CentOS iptables防火墻的Shell腳本分享

    這篇文章主要介紹了一鍵配置CentOS iptables防火墻Shell腳本分享,可保存到一個腳本文件中,在新安裝的CentOS系統(tǒng)時一條命令搞定iptables配置,需要的朋友可以參考下
    2014-07-07
  • Shell 命令執(zhí)行順序分析[圖]

    Shell 命令執(zhí)行順序分析[圖]

    Shell 從標準輸入或腳本中讀取的每一行稱為管道(pipeline);它包含了一個或多個命令(command),這些命令被一個或多個管道字符(|)隔開
    2013-01-01
  • 詳解shell 遍歷文件夾內所有文件并打印絕對路徑

    詳解shell 遍歷文件夾內所有文件并打印絕對路徑

    本篇文章主要介紹了shell 遍歷文件夾內所有文件并打印絕對路徑,具有一定的參考價值,有興趣的可以了解一下。
    2017-01-01
  • linux文本分析awk基礎命令介紹(8)

    linux文本分析awk基礎命令介紹(8)

    這篇文章主要為大家詳細介紹了linux文本分析awk基礎命令,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • shell 安全腳本的實現

    shell 安全腳本的實現

    本文主要介紹了shell 安全腳本的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • 淺談 Linux 下 file 的六種應用實例

    淺談 Linux 下 file 的六種應用實例

    Linux file命令用于辨識文件類型。通過file指令,我們得以辨識該文件的類型。這篇文章主要介紹了淺談 Linux 下 file 的應用實例,需要的朋友可以參考下
    2017-11-11

最新評論