case $变量 in ...esac 语句
和其它编程语言类似,Shell 也支持两种分支结构(选择结构),分别是 if else 语句和 case in 语句
当分支较多,并且判断条件比较简单时,使用 case in 语句就比较方便了
case in 示例:
使用case流控来删除用户
执行脚本:
*)的说明:除最后一个分支外(这个分支可以是普通分支,也可以是*)分支),其它的每个分支都必须以;;结尾,;;代表一个分支的结束,不写的话会有语法错误。最后一个分支可以写;;,也可以不写,因为无论如何,执行到 esac 都会结束整个 case in 语句。
for循环
for i in 的各种用法 :
for i in “file1” “file2” “file3”
for i in /boot/*
for i in /etc/*.conf
for i in $(seq -w 10) --》等宽的01-10
for i in {1…10} for i in $( ls )
for I in $(< file) for i in “$@” --》取所有位置参数,可简写为for i
注意:bash shell支持C式for循环
编写脚本应该注意的事项:
- 开头指定使用什么shell,例如:bash,ksh,csh等
- 脚本功能描述,使用方法,作者,版本,日期等
- 变量名,函数名要有实际意义,函数名以动名词形式,第二个单词首字母要大写。例如:updateConfig()
- 缩进统一用4个空格,不用TAB
- 取变量值使用大括号,如${varname}
- 删除文件时,如果路径有变量的,要判断变量有值,如rm -f ${abc}/* 如果变量abc没有值,则会把根目录下的文件删除
- 脚本中尽量不要使用cd变换目录
- 函数中也要有功能描述,使用依法,版本,日期等
- 函数的功能要单一,不要太复杂
- $()比` `更好
- 尽量不要使用多层if语句,而应该以case语句替代
- 如果需要执行确定次数的循环,应该用for语句替代while语句
- 输入的参数要有正确性判断
- 多加注释,方便自己或他人阅读
使用for循环创建10个用户 示例:
执行脚本:
再次使用for循环删除上面创建的10个用户 示例: