$@ 與 $*
-
$@
與$*
均表示腳本的輸入?yún)?shù)列表, 在不使用""
的情況下二者完全相同
輸入?yún)?shù)的字符串將以IFS分割成單個輸入?yún)?shù)for i in $@: do echo '$@: '$i done ########################## for i in $*: do echo '$*: '$i done # |- bash 111.sh aa bb cc # $@: aa # $@: bb # $@: cc # $*: aa # $*: bb # $*: cc: # |- bash 111.sh aa "bb cc" # $@: aa # $@: bb # $@: cc # $*: aa # $*: bb # $*: cc:
-
使用
""
包住時, 有以下幾個區(qū)別
如下示例, 分別以bash 腳本名 aa bb cc
和bash 腳本名 aa "bb cc"
作為啟動命令, 查看不同輸出-
"$*"
: 強調(diào)整體for i in "$*": do echo '"$*":'$i done # |- bash 111.sh aa bb cc # "$*":aa bb cc # |- bash 111.sh aa "bb cc" # "$*":aa bb cc
-
"$@"
: 強調(diào)個體for i in "$@": do echo '"$@":'$i done # |- bash 111.sh aa bb cc # "$@":aa # "$@":bb # "$@":cc # |- bash 111.sh aa "bb cc" # "$@":aa # "$@":bb cc
-
II. 字符串的默認值
-
用默認值初始化
- 使用
${val1-$val2}
的意思是: 如果val1為null, 則取val2的值 - 使用
${val1:-$val2}
的意思是: 如果val1為null或空字符串時, 取val2的值default="hello world" val1=${1:-$default} echo $val1 # bash 111.sh # hello world # bash 111.sh haha # haha
- 使用
-
繁瑣寫法: 條件判斷
default="hello world" if [ $# -eq 1 ] then default=$1 fi echo $default