原創 Shell 引數傳遞 與 預設值

2022-04-28 18:36:11 字數 2489 閱讀 4515

目錄預設引數(變數預設值)

除了基本的獲取指令碼執行時的傳入引數外, 還有更便捷的語法糖: 引數預設值, 自動賦值.

先來乙個示例:

#!/bin/sh

echo 引數0: $0;

echo 引數1: $1;

echo 引數2: $2;

echo 引數3: $3;

echo 引數4: $4;

執行測試指令碼

[root@yjx214 tmp]# sh testparam.sh a b c d

所有引數: a b c d

引數0: testparam.sh

引數1: a

引數2: b

引數3: c

引數4: d

引數處理

說明$#

傳遞到指令碼的引數個數

$*以乙個單字串顯示所有向指令碼傳遞的引數。 如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有引數。

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

$!後台執行的最後乙個程序的id號

$@與$*相同,但是使用時加引號,並在引號中返回每個引數。 如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有引數。

$-顯示shell使用的當前選項,與set命令功能相同。

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

$* 與 $@ 區別:

#!/bin/bash

# author:菜鳥教程

# url:www.runoob.com

echo "-- \$* 演示 ---"

for i in "$*"; do

echo $i

done

echo "-- \$@ 演示 ---"

for i in "$@"; do

echo $i

done

執行指令碼,輸出結果如下所示:

$ chmod +x test.sh 

$ ./test.sh 1 2 3

-- $* 演示 ---

1 2 3

-- $@ 演示 ---12

3

if [ ! $1 ]; then

$1='default'

fi

取預設值

$

實踐

[root@yjx214 /]# unset name

[root@yjx214 /]# echo $

[root@yjx214 /]# echo $

yjx[root@yjx214 /]# name=

[root@yjx214 /]# echo $

[root@yjx214 /]# echo $

[root@yjx214 /]#

[root@yjx214 /]# unset name

[root@yjx214 /]# echo $

yjx[root@yjx214 /]# echo $name

yjx[root@yjx214 /]# name=""

[root@yjx214 /]# echo $

[root@yjx214 /]#

取預設值

$

測試 null

[root@yjx214 /]# unset name

[root@yjx214 /]# echo $

yjx[root@yjx214 /]# echo $

yjx[root@yjx214 /]#

測試 空字串

[root@yjx214 /]# name=""

[root@yjx214 /]# echo $

yjx[root@yjx214 /]# echo $name

yjx

[root@yjx214 /]# unset name

[root@yjx214 /]# echo $

-bash: name: yjx

[root@yjx214 /]# name=""

[root@yjx214 /]# echo $

-bash: name: yjx

[root@yjx214 /]# name="guest"

[root@yjx214 /]# echo $

guest

:-相反

[root@yjx214 /]# name="guest"

[root@yjx214 /]# echo $

yjx[root@yjx214 /]# echo $name

guest

方法引數 預設值 Python引數的預設值陷阱!

今日分享 引數的預設值陷阱 下面定義的函式f,其引數d是乙個預設引數,且為字典型別 def f a,d print f a print f d do some process return d 最後返回字典d,下面呼叫函式f ret dict f 1 第二個引數d使用預設值 ret dict b 2...

函式引數的預設值與解構賦值的預設值

function foo 物件,沒有預設值,只有解構賦值引數的預設值 console.log x,y foo undefined 5 foo 1 5 foo 1 2 foo typeerror cannot read property x of undefined上面 只使用了物件的解構賦值預設值,...

函式(引數,預設值)

js定義函式引數沒有非常嚴格的要求,可以有也可以沒有,在呼叫的時候也是,引數可以有可以沒有,也可以和定義時的引數個數不一致 沒有給count傳入引數,預設為10 也可以直接在引數中給count賦值 但是特別注意的是不能給count傳入0,因為0與undefined都是false,因此count傳入的...