shell中 , , 的區別

2021-06-10 19:38:31 字數 2189 閱讀 8198

$@ 和  $* 只在被雙引號包起來的時候才會有差異

雙引號括起來的情況:

$*將所有的引數認為是乙個字段

$@以 預設為空格來劃分字段,如果空格在「」裡面,不劃分

沒有括起來的情況是$@和$*一樣的,見到 空格 就劃分字段

$#是 程式的 引數個數(不包括$0)

$?獲取上一次命令執行的返回值,一般 執行 成功 返回0。

$0 $1 $2以此類推,取命令列引數,如 test.sh a b c ,則 $0 是 test,$1是 a, $2是b,$3是c。

乙個小例子 ,僅供參考

test.sh內容如下:

#!/bin/bash

index=1

echo "listing args with\"\$*\":"

for arg in "$*"

doecho "arg #$index=$arg"

let "index+=1"

done

echo "all parameter is one word"

echo

index=1

echo "listing args with \"\$@\":"

for arg in "$@"

doecho "arg #$index=$arg"

let "index+=1"

done

echo "all parameter is all kinds of different words"

echo

index=1

echo "listing args with \$* "

for arg in $*

doecho "arg #$index=$arg"

let "index+=1"

done

echo "all parameter is all kinds of different words"

echo

index=1

echo "listing args with \$r@ "

for arg in $@

doecho "arg #$index=$arg"

let "index+=1"

done

echo

echo "all parameter is all kinds of different words"

執行結果如下

$ ./test.sh 1 2 3 "4 5"

listing args with"$*":

arg #1=1 2 3 4 5

all parameter is one word

listing args with "$@":

arg #1=1

arg #2=2

arg #3=3

arg #4=4 5

all parameter is all kinds of different words

listing args with $*

arg #1=1

arg #2=2

arg #3=3

arg #4=4

arg #5=5

all parameter is all kinds of different words

listing args with $r@

arg #1=1

arg #2=2

arg #3=3

arg #4=4

arg #5=5

all parameter is all kinds of different words

the number of all parameter is 4

shell 中的 的區別

等同於 用於將呼叫函式賦值的時候 比如 result date result date 這兩者的效果是相同的 用於呼叫變數,防止一些轉義之類的錯誤,在呼叫陣列的時候需要加 比如 echo this is 用於計算數值,比如 sum sum 1 用於判斷 if result gt1 then acti...

shell中 與 的區別

命令替換 在bash中,與 反引號 都是用來作命令替換的。命令替換與變數替換差不多,都是用來重組命令列的,先完成引號裡的命令列,然後將其結果替換出來,再重組成新的命令列。exp 1 echo today is date y m d today is 2014 07 01 與 在操作上,這兩者都是達到...

shell 中 與 的區別

在shell中 為建立 echo hello shell out.txt 為追加 echo hello shell out.txt 當out.txt 文字不存在時,與 都會預設建立out.txt文字,並將hello shell 字串儲存到out.txt中 當out.txt文字存在時,會將out.tx...