shell中$和$@的区别

E_BADARGS=65
 
if [ ! -n "$1" ]
then
  echo "Usage: `basename $0` argument1 argument2 etc."
  exit $E_BADARGS
fi
echo
index=1
 
for arg in "$*"
do
  echo "Arg #$index = $arg"
  let "index+=1"
done
echo "Entire arg list as single word."
echo
index=1
 
for arg in "$@"
do
  echo "Arg #$index = $arg"
  let "index+=1"
done
echo "Entire arg list as seperated words."
echo
index=1
 
for arg in $*
do
  echo "Arg #$index = $arg"
  let "index+=1"
done
echo "Entire arg list as seperated words."
echo
index=1
 
for arg in $@
do
  echo "Arg #$index = $arg"
  let "index+=1"
done
echo "Entire arg list as seperated words."
exit 0

 

 

 执行结果:

$ ./test.sh bi yutong

Arg #1 = bi yutong
Entire arg list as single word.

Arg #1 = bi
Arg #2 = yutong
Entire arg list as seperated words.

Arg #1 = bi
Arg #2 = yutong
Entire arg list as seperated words.

Arg #1 = bi
Arg #2 = yutong
Entire arg list as seperated words
 

你可能感兴趣的:(shell)