Linux shell学习笔记(三)
if语句
基本语法:
if ....; then
xxx
fi
或者
if ....; then
....
elif ....; then
....
else
....
fi
基本的if条件命令选项有:
- eq —比较两个参数是否相等(例如,if [ 2 –eq 5 ])
-ne —比较两个参数是否不相等
-lt —参数1是否小于参数2
-le —参数1是否小于等于参数2
-gt —参数1是否大于参数2
-ge —参数1是否大于等于参数2
-f — 检查某文件是否存在(例如,if [ -f "filename" ])
-d — 检查目录是否存在
.....
实例
1.用户输入文件目录,统计出该目录每种文件的总数。
#sort_file.sh #!/bin/bash while : do read -p 'please input your dir: ' dirname if [ -z $dirname ];then #判断用户是否输入为空 continue else break fi done #根据用户的输入,来对该目录下的文件进行分类统计 for i in $(ls $dirname) do if [ -h $dirname/$i ];then #统计链接文件 ((link_file+=1)) elif [ -f $dirname/$i ];then #统计普通文件 ((regular_file+=1)) elif [ -d $dirname/$i ];then#统计目录文件 ((directory_file+=1)) fi done #输出分类文件的数目 echo "the sum of link_file is:$link_file" echo "the sum of regular_file is:$regular_file" echo "the sum of directory_file is:$directory_file"
2.模拟登陆认证
#login.sh #!/bin/bash username = 'ceshi' password ='123' read -p 'please input your name: ' name #获取用户名 read -p 'please input your pwd: ' pwd #获取密码 if [ $name = $username -a $pwd= $password ];then echo 'login successfully' else echo 'login failed' fi
3.成绩查询
#!/bin/bash read -p 'your score: ' score if [ $score -ge 90 ];then echo '优秀' elif [ $score -ge 70 -a $score -lt 90 ];then echo '良好' elif [ $score -ge 60 -a $score -lt 70 ];then echo '一般' elif [ $score -lt 60 ];then echo '较差' fi
4.获取本机的网络地址
1 #!/bin/bash 2 3 file="/etc/sysconfig/network-scripts/ifcfg-eth0" 4 5 if [ -f $file ] ;then 6 7 IP=`grep "IPADDR" $file|awk -F"=" '{ print $2 }'` 8 9 MASK=`grep "NETMASK" $file|awk -F"=" '{ print $2 }'` 10 11 echo "$IP/$MASK" 12 13 exit 1 14 fi
for语句
基本语法:
for循环有两种形式:
1.for((i=1;i<=10;i++))
do
echo $i
done
2.for i in {1..10}
do
echo $i
done
实例
1.检测内网可用IP,并将其输入到文件中保存。
1 #ping.sh 2 #!/bin/bash 3 4 for i in {1..253} 5 do 6 ping -c1 192.168.16.$i &> /dev/null #测试网络是否可以用,并将测试后的信息输入到垃圾堆 7 if [ $? -eq 0 ];then 8 echo "192.168.16.$i,successful" 9 echo "192.168.16.$i" >> /ip.txt 10 fi 11 done
2.打印九九乘法表.
1 #jiujiu.sh 2 #!/bin/bash 3 4 for ((i=1;i<=9;i++)) 5 do 6 for ((j=1;j<=i;j++)) 7 do 8 echo -n "$i * $j = $[$i*$j]" 9 done 10 echo 11 done
while语句
基本语法
while 条件
do
echo 'hello world'
done
实例
1.根据用户的输入来执行cmd命令
1 #cmd.sh 2 #!/bin/bash 3 4 user = 'ceshi' 5 password = '123' 6 flag=true 7 8 while $flag 9 do 10 read -p 'please input your name: ' name #获取用户输入 11 read -p 'please input your password: ' pwd 12 if [ [$name = $user ] ] && [ [ $pwd = $password ] ];then 13 echo "login successfully" 14 while $flag 15 do 16 read -p '>>:' cmd 17 if [ [ $cmd = 'q' ] ];then#只要输入不为q,循环就一直进行 18 flag = false 19 else 20 $cmd 21 fi 22 done 23 fi 24 done