1、关于shell脚本里面$*,$@,$#的含义

1、 bash的一些重要的内置变量:
  $1 ~ $n  参数位置。当n超过9后,使用${n},例如${10}
  $* 代表所有的参数位置,而且视为一个字符串
  $@ 代表所有的参数位置,但是代表各位置参数组成的串行
  $# 参数的个数
  $? 上一个命令的返回值
  $! 上一个后台进程的编号
  $$ 目前shell的进程编号
2、关于shell脚本里面$*,$@,$#的含义
  举例来说
  脚本名称叫shell01.sh 传入两个参数: a b
  运行shell01.sh a b 后
    $* 为 "a b"(一起被引号包住)
   $@ 为 "a" "b" (分别被引号包住)
   $# 为 2 (传入参数的个数)
3、利用shell程序,来理解这些参数的含义
  
#!/bin/bash
num=$#
name=$0
echo "number:$num"
echo "scname:$name"

echo "argume:$@"
echo 'for key in $@ '
for key in $@
do
    echo $key
done
echo "-----------------"
echo 'for key in"$@"  '
for key in "$@"
do
    echo $key
done
echo "-----------------------------"
echo 'for key in $* '
for key2 in $*
do
    echo $key2
done
echo "-----------------"
echo 'for key in "$*" '
for key2 in "$*"
do
    echo $key2
done
echo "show process id:$$"
echo "show precomm stat: $?"
4、程序的运行结果为
1、关于shell脚本里面$*,$@,$#的含义_第1张图片

你可能感兴趣的:(shell,bash的特殊变量)