1.shell脚本的执行方法
当shell脚本以非交互的方式运行时,它会先查找环境变量ENV,该变量指定了一个环境文件(通常是.bashrc),然后从该环境变量文件开始执行,当读取了ENV文件后,SHELL才开始执行shell脚本中的内容。
shell脚本的执行通常可以采用以下三种方法:
- bash script-name 或者 sh script-name
- path/script-name 或者 ./script-name(当前路径下执行)
- source script-name 或 . script-name(注意符号“.”与 script-name之间有空格)
第一种方法是脚本文件本身没有可执行权限时,通常使用的方法;
第二种方法需要先将脚本文件的权限改为可执行,然后通过脚本路径就可以直接执行;
第三中方法是在当前shell环境中直接执行,而不是新创建一个子shell,当我们需要在一个脚本中使用另一个脚本中的变量的时候就使用第三种方法
2.bash的变量类型
根据变量的生效范围等标准可分为:
本地变量:生效范围为当前shell进程,对当前shell之外的其他shell进程包括当前shell 的子shell 进程均无效;
环境变量:生效范围为当前shell进程及子进程;
局部变量:生效范围为当前shell进程中某代码片段(通常指函数);
位置变量:$1, $2, …来表示,用于让脚本在脚本代码 中调用通过命令行传递给它的参数
特殊变量:
本地变量
变量赋值:name=‘value’
- 可以使用引用value:
(1) 可以是直接字串; name=“root”
(2) 变量引用:name=”$USER”
(3) 命令引用:name=COMMANDname=$(COMMAND) - 变量引用:${name} $name
“”:弱引用,其中的变量引用会被替换为变量值
”:强引用,其中的变量引用不会被替换为变量值,而保 持原字符串 - 显示已定义的所有变量:set
- 删除变量:unset name
环境变量
- 变量声明、赋值:
export name=VALUE
declare -x name=VALUE - 变量引用:
name, {name} - 显示所有环境变量: env printenv export declare -x
- 删除变量: unset name
条件选择if语句
单分支
if 判断条件;then
条件为真的分支
fi-
双分支
if 判断条件; then
条件为真的分支代码
else
条件为假的分支代码
fi 多分支
if 判断条件1; then
条件为真的分支代码
elif 判断条件2; then
条件为真的分支代码
elif 判断条件3; then
条件为真的分支代码
else
以上条件都为假的分支代码
fi
条件判断:case语句
case 变量引用 in
PAT1)
分支1
;;
PAT2)
分支2
;;
…
*)
默认分支
;;
esac
for循环
- for 变量名 in 列表;do
循环体
done
- 执行机制: 依次将列表中的元素赋值给“变量名”; 每次赋值后即执 行一次循环体; 直到列表中的元素耗尽,循环结束
while循环
while CONDITION; do
循环体
done
- CONDITION:循环控制条件;进入循环之前,先做一次判 断;每一次循环之后会再次做判断;条件为“true”,则执行 一次循环;直到条件测试状态为“false”终止循环
- 进入条件:CONDITION为true
- 出条件:CONDITION为false
until循环
- until CONDITION; do
循环体
done - 进入条件: CONDITION 为false
- 退出条件: CONDITION 为true
循环控制语句continue
用于循环体中
continue [N]:提前结束第N层的本轮循环,而直接进入下一 轮判断;最内层为第1层
while CONDTIITON1; do
CMD1
…
if CONDITION2; then
continue
fi
CMDN
…
done
脚本练习题
1.求0到50以内偶数的和。
2.打印九九乘法表
3.打印国际象棋盘
4.打印等腰三角形
5.