shell 命令行参数

1, $*与$@区别

cat a.sh

#!/bin/bash

for i in $*    #这里换成$@也是一样的结果

do

echo $i

done

sh a.sh 1 '2 3'

1

2

3

vi a.sh

for i in "$*"

...

sh a.sh 1 '2 3'

1 2 3

vi a.sh

for i in "$@"

...

sh a.sh 1 '2 3'

1

2 3

结论: 不加双引号$*与$@结果一样 ,加了双引号,"$*" 把所有命令行参数作为一个字符串处理,"$@" 会把引号引起来的字符当成一个字符串处理如('2 3')

原文地址:https://www.cnblogs.com/zenghui940/p/4521361.html