首页 > 代码库 > 脚本进阶ij.for,case,while,
脚本进阶ij.for,case,while,
流程控制:
顺序执行、选择执行、循环执行
选择执行:
if COMMADN;then COMMAND;fi :第一个命令执行成功,就执行第二条命令,否则就退出
多分支:
if 判断条件 1 ; then
条件为真的分支代码
elif 判断条件 2 ; then
条件为真的分支代码
elif 判断条件 3 ; then
条件为真的分支代码
else
以上条件都为假的分支代码
fi
? 逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if
case中的 PAT 支持glob风格的通配符:
*: 任意长度任意字符
?: 任意单个字符
[]:指定范围内的任意单个字符
a|b: a或b
case 变量引用 in #变量引用便是方法: $i 就是变量引用的值
PAT1) #每个分支结束,需要双引号结束
分支1
;;
PAT2)
分支2
;;
…
)
默认分支
;;
esac
循环执行:
for 变量名 in 列表;do #变量名,比如i, 直接是变量i ,而不是$i
循环体
done
执行机制 :
依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束
列表生成方式:
(1) 直接给出列表
(2) 整数列表:
(a) {start..end} #{1..100} {1..100..2} {100..1..1} {100..10..-2}
(b) $(seq [start [step]] end) # seq 100 seq 1 2 100 seq 100 -2 1
使用中括号的列表,步长放在后面
使用seq命令列表,步长放在中间
(3) 返回列表的 命令
$(COMMAND)
(4) 使用glob,如:.sh
(5) 变量引用;
$@, $*
取随机字符:tr -dc “[:alnum:]” < /dev/urandom |head -c8 |md5sum 表示取几位字符
取随机密码:md5sum
for循环适合使用在关于数字和列表的循环,列表多少就循环多少次
while循环适用于判断命令成功与否;
打印颜色: echo -e “\033[41m \033[0m” -e 是使转义符生效
设定颜色 结束符
其中41-45设定背景色,31-35字体颜色
while CONDITION; do
循环体
done
? CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再
判断;条件为“true” ,则执行一次循环;直到条件测试状态为“false” 终止循环
因此:CONDTION 一般应该有循环控制变量;而此变量的值会在循环体不断地被修正
? 进入条件:CONDITION 为true
? 退出条件:CONDITION 为false
until CONDITION; do
循环体
done
? 进入条件: CONDITION 为false
? 退出条件: CONDITION 为true
循环控制语句continue
用于循环体中
? continue [N] :提前结束第N 层的本轮循环,而直接进入下一轮判断;最内层为第1层
while CONDTIITON1; do
CMD1
…
if CONDITION2; then
continue
fi
CMD2
done
脚本进阶ij.for,case,while,