linux shell基礎二之命令列引數

2021-07-31 17:01:30 字數 2089 閱讀 8388

執行指令碼時傳遞給指令碼的引數稱為命令列引數。命令列引數用 $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 ...