for语句循环
列表的生成方式:
1、直接给出字符串列表
2、整数列表
a{start...end}
b seq 命令引用$(seq[start [step]] end)
3、返回列表的命令
$(COMMAND)
4、glob机制
示例:同上脚本功能
5、变量引用
$@ $* 将参数做为for循环列表 for语句的应用场景:
有一个功能,这个功能需要循环执行,只是执行对象不同;【对象必须是同类数据】
for语句格式:
a=['a','b','c']--在python程序中,我们很多情况下,需要调用相应的方法去生成列表
for 变量 in 列表;do
循环体
done
例题:99乘法表
#!/bin/bash
#
for i in `seq 9`;do
for j in `seq 9`;do
[ $j -le $i ]&& echo -n "$i*$j=`echo $(($i*$j))` "
done
echo " "
done
echo :
-e 使echo命令能识别特殊字符
扩展:for语句的另一种写法:
基于C语言格式的for语句写法:
for 变量 in 列表;do
循环体
done
优点:不易进入死循环
for((初始条件;条件判断语句;值变化语句));do
循环体
done
99乘法表
for in {1..9};do
for((j=1;j<$i;j++));do
[$j -le $i] && echo -n -e "$i*$j=$[$i*$j] "
done
echo
done
case
while
#
while语句格式
初始值
while 条件;do
循环体
done
until
交互输入
read input()
read a b c
aa bb cc
read命令同时可以定义多个变量值;而输入的内容默认以空格为分隔符,将值输入到对应的变量中;
如果默认值过多,最后所有的值都会被赋予给最后一个变量;、
如果默认值过少,多余的变量则为空;
常用参数:
-p
read -p "请输入一个目录:" 变量
相当于echo "请输入一个目录:";read 变量
-t 定义超时时间
read -t 5 -p "请输入一个目录:" 变量
脚本默认值
[ ! -n $filename ]&&filename="xxx" 判断是否存在-z没有,没有为真;-n有,有为假
filename="xiaohua"
ssh-keygen生成秘钥队
练习:输入设备文件,输出这个设备文件的基本信息
#!/bai/bash
#
read -5 5 -p"请输入一个设备文件名:" devname
[ -z $devname ] && devname='fdisk -l'
if[ -b /dev/$devname ];then
fdisk -l /dev/$devname
exit 0
else
echo "$devname 不是设备文件"
echo "Usage:'请输入一个设备文件,如sda'"
fi
case语句:
case 变量 in
PATTEN1)
代码块1
;;
PATTEN2)
代码块2
;;
*)
代码库
esac