shell中$*與$@的區別

來源:互聯網
上載者:User
2009-09-27 11:40 shell中$*與$@的區別

關於$* 和 $@的 一點 認識 同是菜鳥一起學習

$*
所有的位置參數,被作為一個單詞.
注意:"$*"必須被""引用.
$@
與$*同義,但是每個參數都是一個獨立的""引用字串,這就意味著參數被完整地傳遞,
並沒有被解釋和擴充.這也意味著,每個參數列表中的每個參數都被當成一個獨立的
單詞.
注意:"$@"必須被引用.

$@ $* 只在被雙引號包起來的時候才會有差異
雙引號括起來的情況:
$*將所有的參數認為是一個欄位
$@以IFS(預設為空白格)來劃分欄位,如果空格在“”裡面,不劃分。採用LS的指令碼運行./test 1 "2 3" 4   來發現差異

沒有括起來的情況是$@和$*一樣的,見到IFS就劃分欄位。還是採用LS的指令碼運行./test 1 "2 3" 4   來發現差異

一個小例子 ,僅供參考

[Copy to clipboard]

[ - ]CODE:#!/bin/bash
echo

index=1

echo "Listing args with\"\$*\":"
for arg in "$*"

do
   echo "Arg #$index=$arg"
   let "index+=1"

done

echo "所有的參數被認為是一個單詞"

echo

index=1

echo "Listing args with \"\$@\":"
for arg in "$@"
do
echo "Arg #$index=$arg"
let "index+=1"
done

echo "所有的參數被認為是各個獨立的單詞"

echo

index=1

echo "Listing args with \$* (未被引用):"
for arg in $*
do
echo "Arg #$index=$arg"
let "index+=1"
done
echo "所有的參數被認為是各個獨立的單詞"

exit 0
運行後輸出為

[Copy to clipboard]

[ - ]CODE:[root@localhost ABS]# ./test 1 2 3 4

Listing args with"$*":
Arg #1=1 2 3 4
所有的參數被認為是一個單詞

Listing args with "$@":
Arg #1=1
Arg #2=2
Arg #3=3
Arg #4=4
所有的參數被認為是各個獨立的單詞

Listing args with $* (未被引用):
Arg #1=1
Arg #2=2
Arg #3=3
Arg #4=4
所有的參數被認為是各個獨立的單詞
[ 本帖最後由 一路征程一路笑 於 2008-7-20 09:52 編輯 ]

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.