Shell 脚本
脚本格式
#!/bin/bash
变量
常用系统变量
- $HOME
- $PWD
- $SHELL
- $USER
$ echo $HOME
/home/morven
自定义变量
变量=值
tip
- 变量名可以由字母、数字和下划线组成,但不能以数字开头,环境变量名建议大写
- 等号两侧不能由空格
$ num=10
$ echo $num
10
tip
- 变量使用 $ 取值
- export 可以将变量提升为全局环境变量
特殊变量
- $n : n 为数字,$0 代表该脚本名称,$1 - $9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如 ${10}
- $# : 获取所有输入参数个数,常用于循环
- $* : 代表命令行中所有的参数,$* 把所有的参数看成一个整体
- $@ : 代表命令行中所有的参数,不过 $@ 把每个参数区分对待
- $? : 最后一次执行的命令的返回状态。如果这个变量的值为 0 ,表明上一个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则表明上一个命令执行错误
运算符
$((运算式)) 或 $[运算式]
$ v=$[(2+3)*4]
$ echo $v
20
条件判断
[ condition ]
caution
condition 前后有空格!
比较
- = : 判断字符串是否相等
- -lt : less than
- -le : less equal
- -eq : equal
- -gt : greater than
- -ge : greater equal
- -ne : not equal
权限
- -r : read 读权限
- -w : write 写权限
- -x : execute 执行权限
文件类型
- -f : file 文件且存在
- -e : existence 存在
- -d : directory 目录且存在
流程控制
if
if [ condition ]; then
...
fi
if [ condition ]
then
...
elif
then
...
fi
caution
- [ condition ] 要有空格
- if 后要有空格
case
case $变量 in
"value1")
...
;;
"value2")
...
;;
*)
...
esac
for
用法1
for((i=0;i<=100;i++))
do
...
done
用法2
for $val in value1 value2 value3
do
...
done
while
while [ condition ]
do
...
done