bash脚本的编写,对于Linux这个多用户,多任务的系统,有很大的帮助,脚本可以帮助我们定时执行任务,过滤文本,检查系统性能等等。下面我们来了解一下过程式和循环式脚本的编写。
使用read 命令来接受输入
使用read 来把输入值分配给一个或多个shell 变量:
-p 指定要显示的提示
-t TIMEOUT
read 从标准输入中读取值,给每个单词分配一个变量,所有剩余单词都被分配给最后一个变量。
read -p “Enter a filename: “ FILE
过程式编程语言分为三种:1.顺序执行 2.选择执行 3.循环执行
条件选择if 语句
选择执行:
注意:if 语句可 嵌套
单分支
if 判断条件:then
条件为真的分支代码
fi
双分支
if 判断条件; then
条件为真的分支代码
else
条件为假的分支代码
fi
多分支
if CONDITION1 ; then
if-true
elif CONDITION2 ; then
if-true
elif CONDITION3 ; then
if-true
...
else
all-false
fi
逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if 语句。
if 实例
1 、写一个脚本/root/bin/createuser.sh ,实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id 号等信息
条件判断:case 语句
case 变量引用 in
PAT1)
分支1
;;
PAT2)
分支2
;;
...
*)
默认分支
;;
esac
case 支持glob 风格的通配符:
*: 任意长度任意字符
?: 任意单个字符
[] :指定范围内的任意单个字符
a|b: a或b
case 实例
1,写一个脚本/root/bin/yesorno.sh ,提示用户输入yes或no, 并判断用户输入的是yes还是no,
循环执行:将某代码段重复运行多次
重复运行多少次:
循环次数事先已知
循环次数事先未知
有进入条件和退出条件
分为三种:for, while, until
for 循环
for 变量名 in 列表;do (for的变量名可以不用加$符号)
循环体
done
执行机制 : 依次将列表中的元素赋值给“变量名“; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束。
列表生成方式:
(1) 直接给出列表
(2) 整数列表:
(a) {start..end}
(b) $(seq [start [step]] end)
(3) 返回列表的命令
$(COMMAND)
(4) 使用glob,如:*.sh
(5) 变量引用;
$@, $*
for实例
1,用for编写一个99乘法表。
while 循环
while CONDITION; do
循环体
done
CONDITION :循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true",则执行一次循环;直到条件测试状态为“false”终止循环.
因此:CONDTION 一般应该有循环控制变量;而此变量的值会在循环体不断地被修正
进入条件:CONDITION 为true;(真)
退出条件:CONDITION 为false ;(假)
while实例
1,用while编写一个99乘法表。
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
循环控制语句break:用于循环体中
break [N] :提前结束第N 层循环, 最内层为第1层。
while CONDTIITON1; do
CMD1
...
if CONDITION2; then
break
fi
CMDn
...
done
循环控制语句exit:用于循环体中
exit :直接结束整个循环,后面的不再执行。
创建无限循环
while true; do
循环体
done
until false; do
循环体
Done