執行指令碼時傳遞給指令碼的引數稱為命令列引數。命令列引數用 $n 表示,例如,$1 表示第乙個引數,$2 表示第二個引數,依次類推。
請看下面的指令碼:
#!/bin/bash
echo "file name: $0"
echo "first parameter : $1"
echo "first parameter : $2"
echo "quoted values: $@"
echo "quoted values: $*"
echo "total number of parameters : $#"
執行結果:
$./test.sh zara ali
file name : ./test.sh
first parameter : zara
second parameter : ali
quoted values: zara ali
quoted values: zara ali
total number of parameters : 2
$* 和 $@ 的區別
$* 和 $@ 都表示傳遞給函式或指令碼的所有引數,不被雙引號(" ")包含時,都以"$1" "$2" … "$n" 的形式輸出所有引數。
但是當它們被雙引號(" ")包含時,"$*" 會將所有的引數作為乙個整體,以"$1 $2 … $n"的形式輸出所有引數;"$@" 會將各個引數分開,以"$1" "$2" … "$n" 的形式輸出所有引數。
下面的例子可以清楚的看到 $* 和 $@ 的區別:
#!/bin/bash
echo "\$*=" $*
echo "\"\$*\"=" "$*"
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
執行 ./test.sh "a" "b" "c" "d",看到下面的結果:
$*= a b c d
"$*"= a b c d
$@= a b c d
"$@"= a b c d
print each param from $*ab
cdprint each param from $@ab
cdprint each param from "$*"
a b c d
print each param from "$@"ab
cd退出狀態
$? 可以獲取上乙個命令的退出狀態。所謂退出狀態,就是上乙個命令執行後的返回結果。
退出狀態是乙個數字,一般情況下,大部分命令執行成功會返回 0,失敗返回 1。
不過,也有一些命令返回其他值,表示不同型別的錯誤。
下面例子中,命令成功執行:
$./test.sh zara ali
file name : ./test.sh
first parameter : zara
second parameter : ali
quoted values: zara ali
quoted values: zara ali
total number of parameters : 2
$echo $?
0$
$? 也可以表示函式的返回值
Android開發Linux shell命令
一 shell快捷鍵使用 1 上下箭頭調出歷史命令 2 ctrl a跳到第乙個字元前 3 ctrl u刪除提示符前的所有字元 4 ctrl k刪除提示符後全部字元 5 ctrl e轉到字元尾部 6 ctrl r向前查詢用過的命令 7 命令補齊 8 ctrl c 撤消當前命令列的編輯,另起一行.9 清...
Linux shell 實時監測程序 top命令
前言 當程式執行在系統時,我們稱子為程序。想要監測這些程序,需要用到ps命令。雖然ps命令在收集執行在系統中的資訊時非常有用。但是不足之處在於,ps命令只能顯示某個特定時間點的資訊。而要想實時監測程序狀態,需要用到接下來所講的top命令。實時監測程序 我們前言也說了,ps命令只能顯示某個特定時間點的...
linux shell基礎知識整理 二
bash支援一維陣列 不支援多維陣列 並且沒有限定陣列的大小。類似於 c 語言,陣列元素的下標由 0 開始編號。獲取陣列中的元素要利用下標,下標可以是整數或算術表示式,其值應大於或等於 0。在 shell 中,用括號來表示陣列,陣列元素用 空格 符號分割開。定義陣列的一般形式為 陣列名 值1 值2 ...