shell傳遞引數

2022-05-18 07:42:14 字數 2153 閱讀 8912

案例,引數比較

找出傳遞引數最大的數字

# vi compare_parameter.sh 

#!/bin/bash

if [ $# -ne 3

] then

echo

"$0:number1 number2 number3 are not given

" >&2

exit 1fi

n1=$1

n2=$2

n3=$3

if [ $n1 -gt $n2 ] && [ $n1 -gt $n3 ]

then

echo

"$n1 is bigest number

"elif [ $n2 -gt $n1 ] && [ $n2 -gt $n3 ]

then

echo

"$n2 is bigest number

"elif [ $n3 -gt $n1 ] && [ $n3 -gt $n2 ]

then

echo

"$n3 is bigest number

"elif [ $

1 -eq $2 ] && [ $1 -eq $3 ] && [ $2 -eq $3

] then

echo

"all the three numbers are equal

"else

echo

"i can not figure out which number is biger

"fi

通過引數描述變數案例

# vi describe_parameter

#!/bin/bash

if [ $# -lt 3

]then

echo

"error! not enough arguments

"echo

"$0 $@

"exit 1fi

func()

func

echo

'"$?":

'"$?

" # result from func

echo

'"$0":

'"$0

"echo

'"$1":

'"$1

"echo

'"$2":

'"$2

"echo

'"$3":

'"$3

"echo

'"$@":

'"$@

"

echo 

'"$#":

'"$#

"echo

'"$$":

'"$$

"echo

'"$?":

'"$?

" # result from last one : "$$"

$$  指令碼執行的當前程序id號

$?  顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。

# chmod +x describe_parameter.sh 

# ./describe_parameter.sh ouyangyewei yihaodian 23

$@與$*的區別是?

注意:$* 與 $@ 區別:

相同點:都是引用所有引數。

不同點:只有在雙引號中體現出來。假設在指令碼執行時寫了三個引數 1、2、3,,則 " * " 等價於 "1 2 3"(傳遞了乙個引數),而 "@" 等價於 "1" "2" "3"(傳遞了三個引數)。

作業編寫shell指令碼,要求輸入5個引數,並將引數按與輸入順序相反的順序輸出。

#!/bin/bash

if [ $# -eq 5

]then

echo "$5

"echo "$4

"echo "$3

"echo "$2

"echo "$1

"else

echo

"請輸入五個引數!

shell引數傳遞

1.位置變數引數即可傳入到指令碼的引數,最多可以訪問 9個,比如 sh a b c d 其中 0 是指令碼名字 1 是第乙個引數 a以此類推 2.特殊參量 傳遞到指令碼的引數個數 以乙個單字串顯示所有向指令碼傳遞的引數。與位置變數不同,可以超過9個 指令碼執行的當前id 後台執行的最後乙個程序的程序...

Shell 傳遞引數

在執行 shell 指令碼時,向指令碼傳遞引數,指令碼內獲取引數的格式為 n。n代表一 個數字,1為執行 指令碼的第 乙個引數 2為執 行指令碼的 第二個參 數,以此 類推 例項以下 例項我們 向指令碼傳 遞三個參 數,並分 別輸出,其中0 為執行的檔名 bin bash echo shell 傳遞...

Shell 傳遞引數

shell 傳遞引數 我們可以在執行 shell 指令碼時,向指令碼傳遞引數,指令碼內獲取引數的格式為 n。n 代表乙個數字,1 為執行指令碼的第乙個引數,2 為執行指令碼的第二個引數,以此類推 例項 以下例項我們向指令碼傳遞三個引數,並分別輸出,其中 0為執行的檔名 bin bash author...