Shell编程
Shell 脚本的解释器
- /bin/sh
- /bin/bash
- /sbin/nologin
- /bin/dash
- /bin/tcsh
- /bin/csh
脚本的编写规范
- 首行描述解释器 #!/bin/bash
执行脚本的三种方式
- bash 脚本名称 脚本参数
- sh 脚本名称 脚本参数
- /脚本名称 脚本参数【./脚本名称之间没有空格】【chmod 777 脚本名称】
变量的声明
- 变量名=”值”【中间不能有空格】
- 变量名要求 字母或下划线或数字(开头不能是数字)构成
变量的引用
- 使用$ 或 ${}引用变量
- 删除变量 只读变量
- 删除 unset 变量名
- 只读 readonly 变量名
字符串使用
- 双引号(””):内部可以使用变量
- 单引号(‘’):内部所有的原样输出
- 反引号(``):表示可执行
字符串长度及截取
- 长度: echo ${#skill}
- 截取: echo ${str:2:2} 【在第二个字符开始截取截取两位】
脚本参数传递
- bash 脚本名 参数1 参数2 参数3 。。。。。。
- 脚本内
- $0 脚本名称
- $1 参数1
- $2 参数2
- $n 参数n
- $* 所有参数
- $# 参数的个数
算数运算符
- 加法计算
expr 2 + 2
- 乘法计算
expr 2 \* 2
流程控制if*
- if [ $a -gt 10 ];then
代码1
elif [ $a -lt 10 ];then
代码2
else
代码3
fi
关系运算符
- 大于:-gt
- 小于:-lt
- 大于等于:-ge
- 小于等于 :-le
- 小于:-eq
- 不等于 :-ne
循环
- For 循环:
For aa in XXXX
do
循环体
done - While循环:
While 条件 ;
do
循环体
done
跳出循环
- 跳出所有循环:break
- 跳出当前循环,进入下一次循环:continue
case ()
- case 值 in
结果1)
结果1对应的操作;;
结果2)
结果2对应的操作;;
结果3)
结果3对应的操作;;
esac
接收控制台数据
- read 变量名
函数的使用
- 函数声明:
[function] 函数名(){
函数体
$参数1
$参数2
$参数3
}
函数调用
- 函数名 参数1 参数2 参数3
数组
- 数组声明: 数组名称=(元素1 元素2 元素3 元素4)
数组的使用
- 单个使用 echo 数组名[角标] 【角标从0开始】
- 遍历数组
for var in ${my_arr[*]}
do
echo $var
done
文件加载
- 在文件中添加 . 脚本名称 或者 source 脚本名称
#!/bin/bash - source ./test1.sh :加载test1.sh 的文件内容