[20210913]bash shell $* and $@ 的區別.txt

lfree發表於2021-09-14

[20210913]bash shell $* and $@ 的區別.txt

--//bash shell $* and $@ 都是輸出bash shell的整個命令列引數的內容,兩者還是有點區別的,透過例子說明:

$ cat disp_argv_params.sh
#!/bin/bash
# display all the parameters
#
echo
echo "Using the \$* method: $*"
echo "$*" | xargs -IQ echo Q

count=1
for param in "$*"
do
     echo "\$* Parameter #$count = $param"
     count=$[ $count + 1 ]
done

echo
echo "Using the \$@ method: $@"
echo "$@" | xargs -IQ echo Q

count=1
for param in "$@"
do
     echo "\$@ Parameter #$count = $param"
     count=$[ $count + 1 ]
done
echo

--//測試:
$ . disp_argv_params.sh 1111 2222 3333        4444

Using the $* method: 1111 2222 3333 4444
1111 2222 3333 4444
$* Parameter #1 = 1111 2222 3333 4444

Using the $@ method: 1111 2222 3333 4444
1111 2222 3333 4444
$@ Parameter #1 = 1111
$@ Parameter #2 = 2222
$@ Parameter #3 = 3333
$@ Parameter #4 = 4444
--//咋一看似乎感覺差不多,不過你仔細看for就明白了.

$ . disp_argv_params.sh 1111 2222 3333                 "  4444"

Using the $* method: 1111 2222 3333   4444
1111 2222 3333   4444
$* Parameter #1 = 1111 2222 3333   4444

Using the $@ method: 1111 2222 3333   4444
1111 2222 3333   4444
$@ Parameter #1 = 1111
$@ Parameter #2 = 2222
$@ Parameter #3 = 3333
$@ Parameter #4 =   4444

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2791907/,如需轉載,請註明出處,否則將追究法律責任。

相關文章