特殊变量:$n
- $0 获取当前脚本的名称
- $1 获取第一个参数
- $2 获取第二个参数
..... - 如果要获取第10个以后的参数请使用${10}、${11}...如果不加大括号的话,比如$10或误以为获取的是第一个参数再拼接0
- $# 获取所有参数的个数
- $* 获取所有的参数
- $@ 也是获取所有的参数
- 以上两个当不加双引号时,输出的效果都是一样的,如格式为: "$1 、$2 ...$n"
- 如果加上双引号后,$@获取一组参数列表对象, 格式为: "$1"、 "$2" "$n",通过循环就可以看出来
echo ‘循环输出$*的参数‘
for item in "$*"
do
echo $item
done
echo ------------------------------------------
echo ‘循环输出$@的参数‘
for item in "$@"
do
echo $item
done
- $?获取上条命令的退出状态码,或函数返回值,返回0代表执行成功,非0代表执行失败
- $$获取当前shell环境的进程id
Shell环境的加载原理
-
用户进入linux系统就会初始化shell环境,就会加载系统配置文件和用户个人配置文件中的环境变量
-
shell分为登录环境和非登录环境
- 登录环境是指:需要用户名和密码登录的shell环境
- 非登录环境是指:不需要用户名和密码登录的shell环境
-
shell配置文件分为全局配置文件和用户个人配置文件
- 全局:/etc/profile、 /etc/profile.d/*.sh 、/etc/bashrc
- 个人:/.bash_profile、/.bashrc
-
环境变量加载初始过程
-
如果验证当前是登录环境还是非登录环境:使用$?
- 如果返回的是-bash说明是登录环境
- 如果返回的是bash说明是非登录环境
-
非登录环境切换登录环境如: su testuser - l (输入密码)
-
登录环境切换为非登录环境输入:bash
-
如再非登录环境/.bashrc中添加了环境变量 (环境变量中,变量名建议都大写),如果要立马生效,需要重载配置文件
TESTA=888
export TESTA
使用source /home/xxx/.bashrc