當前位置:
首頁 > 最新 > 向shell腳本傳送參數數據

向shell腳本傳送參數數據

我們可以在執行 Shell 腳本時,可以向腳本傳遞參數數據。腳本內獲取參數的格式為:$n。(n 代表一個數字,0為所執行的shell腳本名稱,1 為執行腳本的第一個參數,2 為執行腳本的第二個參數,以此類推……)

舉例說明

我們先編寫一個腳本,名字為test.sh,她的內容如下:

#!/bin/bash

echo"Shell 輸出腳本名稱及參數";

echo"執行的腳本名:$0";

echo"第一個參數為:$1";

echo"第二個參數為:$2"

;echo"第三個參數為:$3";

我們再給腳本賦予運行許可權後,運行輸出:

$chmod+x test.sh

#Shell 傳遞參數實例!

$ ./test.sh123

腳本運行結果:

執行的文件名:./test.sh

第一個參數為:1

第二個參數為:2

第三個參數為:3

處理參數擴展

除了上面的使用方式,我們經常還會用到這些,大家都知道普通的bash命令後邊可以跟任意的參數,那我們自己編寫的腳本是否也支持傳遞參數呢?答案當然是肯定的

執行「vim test.sh」創建一個新的shell腳本。腳本test.sh的內容如下:

#!/bin/sh

name=$1

echo "the $ are great man!"

給新創建的test.sh的腳本賦可執行許可權,命令為

chmod +x test.sh

執行"./test.sh "xiao wang" "命令,可以看到

腳本的結果「the xiao wang are great man!」

"name=$1"中$1為系統提供的位置參數,$0代表程序的名稱(./test.sh),[$1 $2...]從1開始為傳遞的參數。linux系統除了提供位置參數還提供內置參數,所有內置參數如下:

$0 ----當前腳本文件名

$n ----傳遞給腳本或函數的參數,n是一個數字,表示第幾個參數,$1表示第一個參數,$2表示第二個參數 ...

$# ----傳遞給腳本或函數的參數個數

$* ----傳遞給腳本或函數的所有參數,當它被雙引號(" ")包含時,"$*" 會將所有的參數作為一個整體,以"$1 $2 ... $n"的形式輸出所有參數

$@ ----傳遞給腳本或函數的所有參數,當它被雙引號(" ")包含時,與$*稍有不同,"$@" 會將各個參數分開,以"$1" "$2" … "$n" 的形式輸出所有參數

$* 和$@不被雙引號(" ")包含時,都以"$1" "$2" … "$n" 的形式輸出所有參數

下面寫個小程序實踐一下$* 和$@

$? ----上一個命令的退出狀態,或函數的返回值,如果正常退出則返回0,反之為非0值

$$ ----當前shell進程pid,對於shell腳本,就是這些腳本所在的進程ID

$! ----上一個命令的pid

新建test.sh chmod +x test.sh 執行./test.sh "a" "b" "c" "d",觀察列印結果

#!/bin/bash

echo "$*=" $*

echo "$@=" $@

echo "print each param from $*"

for var in $*

do

echo $var

done

echo "print each param from $@"

for var in $@

do

echo $var

done

echo "print each param from "$*""

for var in "$*"

do

echo $var

done

echo "print each param from "$@""

for var in "$@"

do

echo $var

done

列印結果:

堅持就是勝利,掌握好紮實的理論基礎。!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲運維智慧 的精彩文章:

TAG:雲運維智慧 |