变量简介
$? 表示上一个命令退出的状态码
$$ 表示当前进程编号
$0 表示当前脚本名称
$n 表示n位置的输入参数(n代表数字,n>=1)
$# 表示参数的个数,常用于循环
$*和$@ 都表示参数列表
变量展示:
例一
定义一个脚本
#!/bin/bash
echo '$$:查看进程号'
echo $$
echo '$?:返回上个进程执行的状态,0为正确,正数是错误'
echo $?
echo '$0:返回脚本的名称'
echo $0
echo '$n #查看脚本参数'
echo $n
echo '$# #参数个数'
echo $#
echo '$* #所有的参数'
echo $*
echo '$@ #所有的参数'
echo $@
执行结果
例二
#!/bin/bash
echo "test var"
echo $$
echo $0
echo $1
echo $2
echo $#
echo $*
echo $@
echo $?
执行结果
注意:
echo $1 与 echo10
当脚本中存在 echo $1 echo$10 这两个参数的时候
当第一个参数(echo $1)传入aa的时候,echo $10输出会变成 aa0 等于$1+0,
所以想有第十个参数 需要这么写: echo${10}
$*与$@的区别
#!/bin/bash
echo --------------------
for a in $*
do echo $a
done
echo --------------------
for b in $@
do echo $b
done
echo --------------------
for a in "$*"
do echo $a
done
echo --------------------
for b in "$@"
do echo $b
done
执行结果
$* 和 $@ 都表示传递给函数或脚本的所有参数
不被双引号" "包含时,$* 和 $@ 都以$1 $2 … $n 的形式组成参数列表
当它们被双引号" "包含时
"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式组成一个整串;
"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式组成一个参数列表。