类型 注释
强变量 变量在使用前,必须事先声明,甚至还需要初始化
弱变量 变量用时声明,甚至不区分类型
变量的作用:用来保存变化的数据
变量名 名称固定,由系统设定或用户定义
变量值 根据用户设置、系统环境变化而变化
设置方法
变量名=变量值
Shell变量的类型
类型 说明
环境变量 由系统维护,用于设置工作环境,只有个别环境变量用户可以直接更改
位置变量 通过命令行给脚本程序传递参数
预定义变量 bash内置的一类有特殊用途的变量,可以直接调用,但不能直接赋值或修改
自定义变量 由用户自己设置、修改及使用
环境变量
在系统启动时,加载系统配置文件定义的变量
变量名和变量值是系统设置
变量名通常用大写字母定义
变量存的值是规定的,通常情况下不建议修改系统环境变量的值
作用域为当前shell进程及其子进程
配置文件
配置文件 注释 /etc/profile ~/.bashrc_profile
相关操作
env 列出所有的环境变量 set 列出所有变量
常见的环境变量
PWD
PATH
USER
LOGNAME
UID
SHELL
HOME
PS1
PS2
如何查看变量值
echo $变量名
位置变量:只读变量
位置变量 只读变量 在执行脚本或Shell时,给脚本或函数传值的 $1.....$n 表示为$n,n为正整数 ${10}......${N}
预定义变量(特殊变量)
预定义变量
当前脚本使用的Shell里面预先定义好的变量
变量名是固定的,变量值通常不修改
变量名
变量名 含义 $$ 当前运行进程的PID号 $? 最后一次命令执行后的返回状态值,0表示正常,1或其他值为异常 $0 当前运行的进程或脚本名 $# 位置变量的个数 $* 将所有的命令行所有参数视为单个字符串,等同于"$1$2$3" $! 后台最后一个进程的PID号 $@ 将命令行每个参数视为单独的字符串,等同于"$1"、"$2"、"$3"
练习:写一个脚本
给脚本传递两个参数(整数);
显示此两者之和,之乘积
#!/bin/bash # if [ $# -lt 2 ]; then echo "Usage: cacl.sh ARG1 ARG2" exit 8 fi echo "The sum is: $[$1+$2]." echo "The prod is: $[$1*$2]."
退出状态及其含义:
退出状态及其含义 注释 0 表示运行成功,程序执行未遇到任何问题 1~125 表示运行失败,脚本命令、系统命令错误或参数传递错误 126 找到该命令但无法执行 127 未找到要运行的命令 >128 命令被系统强行结束 1,2,127 系统预留
难点理论与实战剖析
$*和$@的区别 $*:将所有的命令行所有参数视为单个字符串,等同于"$1$2$3" $@:将命令行每个参数视为单独的字符串,等同于"$1"、"$2"、"$3"。这是将参数传递给其他程序的最佳方式,因为它会保留所有内嵌在每个参数里的任何空白。