2019独角兽企业重金招聘Python工程师标准>>>
在Bash脚本中,$*和$@都用于表示执行脚本时所传入的参数。先通过一个例子看看他们的区别:
#!/bin/bash
# testvar.sh
echo "-------------ISF is set to \"-seperator\" ------------"
IFS="-seperator"; # 注意 seperator前有一个减号(-)
for i in "$@"; do echo "@ '$i'"; done
for i in "$*"; do echo "* '$i'"; doneecho "-------------ISF is set to null ------------------------"
IFS=
for i in "$@"; do echo "@ '$i'"; done
for i in "$*"; do echo "* '$i'"; doneecho "-------------ISF is unset ------------------------"
unset IFS
for i in "$@"; do echo "@ '$i'"; done
for i in "$*"; do echo "* '$i'"; doneecho "---------$* and $@ are not put into double quotes(\"\")-------"
for i in $@; do echo "@ '$i'"; done
for i in $*; do echo "* '$i'"; done
执行的结果如下:-------------ISF is set to "-seperator" ------------
@ 'aa'
@ 'bb'
@ 'cc'
* 'aa-bb-cc'
-------------ISF is set to null ------------------------
@ 'aa'
@ 'bb'
@ 'cc'
* 'aabbcc'
-------------ISF is unset ------------------------
@ 'aa'
@ 'bb'
@ 'cc'
* 'aa bb cc'
---------aa bb cc and aa bb cc are not put into double quotes("")-------
@ 'aa'
@ 'bb'
@ 'cc'
* 'aa'
* 'bb'
* 'cc'