Bash 指令碼中 $@ 和 $* 之間的區別
Yahya Irmak
2022年5月11日
你可以使用 $@
和 $*
來獲取 Bash 指令碼中的位置引數。本文將解釋 Bash 指令碼中星號 ($*
) 和 at-sign ($@
) 之間的區別。
Bash 指令碼中星號 ($*
) 和簽名 ($@
) 之間的區別
$*
表示式從一開始並擴充套件到位置引數。如果表示式未與雙引號一起使用,則每個位置引數都擴充套件為一個單獨的單詞。
#!/bin/bash
for i in $*; do
echo "* without quote -> $i"
done
如果表示式與雙引號一起使用,則每個引數的值將擴充套件為一個單詞。引數由內部欄位分隔符 (IFS) 分隔。
如果未定義 IFS,則它們用空格分隔。如果將其設定為 null,則將值連線起來而不插入分隔符。
#!/bin/bash
for i in "$*"; do
echo "* with quote -> $i"
done
$@
表示式從一開始並擴充套件到位置引數。如果表示式使用雙引號,每個引數擴充套件為一個單獨的單詞,但引號內的引數不被拆分;也就是說,"$@"
等價於 $1 $2 …
。
#!/bin/bash
for i in "$@"; do
echo "@ with quote -> $i"
done
如果使用不帶雙引號的表示式,每個引數將擴充套件為一個單獨的單詞,包括引號中的引數。
#!/bin/bash
for i in $@; do
echo "@ without quote -> $i"
done
作者: Yahya Irmak
Yahya Irmak has experience in full stack technologies such as Java, Spring Boot, JavaScript, CSS, HTML.
LinkedIn