Linux笔记之shell脚本4:条件语句
来源:互联网 发布:ubuntu 挂载vmdk 编辑:程序博客网 时间:2024/06/11 19:23
条件语句有if,for,while,switch
PART 1:if语句
(if...then...fi)
编写一脚本:如果目录不存在,创建目录
#!/bin/bash
DIR="/root/Desktop/ddd"
if [ ! -e $DIR ]
then
mkdir -p $DIR
fi
(if...then...else...fi)
编写一脚本:ping一ip地址,根据ping的结果输出(ping的-c代表发送数据包数量为3,-i代表隔0.2秒发数据包,-W代表超3秒视为超时,$1是用户输入的第一个参数,即ip地址)
#!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 &> /dev/null
if [ $? -eq 0 ]
then
echo "Host $1 is up"
else
echo "Host $1 is down"
fi
(if...then...elif...then...else...fi)
写一个判定成绩的脚本:read -p 表示输入一个值到变量里
#!/bin/bash
read -p "Input your score (0-100):" GRADE
if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ];then
echo "$GRADE is Excellent!"
elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ];then
echo "$GRADE is Pass.."
else echo "$GRADE is Fail"
fi
PART 2:for语句
(for...in...do...done)
创建一份用户名单在user_list.txt:
okaka
longly
songyan
koka
shimaburo
john
laka
用for循环新建用户,并赋予密码
#!/bin/bashread -p "Enter The Users Password:" PASSWD
for UNAME in `cat user_list.txt`
do
id $UNAME &> /dev/null
if [ $? -eq 0 ]
then
echo "$UNAME Already exists"
else
useradd $UNAME &> /dev/null
echo "$PASSWD" | passwd --stdin $UNAME &> /dev/null
if [ $? -eq 0 ]
then
echo "$UNAME Create success"
else
echo "$UNAME Create failure"
fi
fi
done
新增后可以在这里看用户:
[root@okaka Desktop]# tail -6 /etc/passwd
longly:x:1002:1002::/home/longly:/bin/bash
songyan:x:1003:1003::/home/songyan:/bin/bash
koka:x:1004:1004::/home/koka:/bin/bash
shimaburo:x:1005:1005::/home/shimaburo:/bin/bash
john:x:1006:1006::/home/john:/bin/bash
laka:x:1007:1007::/home/laka:/bin/bash
提示:
&> /dev/null 表示把输出重定向到一个无效的区域,作用是不把结果显示在屏幕上
id命令可以显示真实有效的用户 ID(UID) 和组 ID(GID),这里的作用是辨别是否有该用户存在
passwd命令用于修改用户密码, --stdin选项是指允许用标准输入修改用户密码
再弄多一个例子:
有ip_list内容如下:
127.0.0.1
192.168.10.10
192.168.10.11
192.168.31.170
现在写一脚本来检验哪些ip是可以ping通的:
#!/bin/bash
IPLIST=$(cat /root/Desktop/ip_list.txt)
for IP in $IPLIST
do
ping -c 3 -i 0.2 -W 3 $IP &> /dev/null
if [ $? -eq 0 ];then
echo "Host $IP is up"
else
echo "Host $IP is down"
fi
done
结果如下
[root@okaka Desktop]# ./for_test_2.sh
Host 127.0.0.1 is up
Host 192.168.10.10 is down
Host 192.168.10.11 is down
Host 192.168.31.170 is down
提示:
上面两个例子中我发现`cat user_list.txt`和$(cat /root/Desktop/ip_list.txt)都是可行的,而且作用也一样,是用来执行里面的语句的
PART 3:while语句
(while...do...done),中间可以加exit 0来跳出循环
编写一个猜价格的游戏:
PRICE=$(expr $RANDOM % 1000)TIMES=0
echo "the price of commodity is $PRICE,how much is it?"
while true
do
read -p "input your price:" GUESS
let TIMES++
if [ $GUESS -eq $PRICE ];then
echo "OK!you are right!!HaHa"
echo "you've guessed it $TIMES times"
exit 0
elif [ $GUESS -gt $PRICE ];then
echo "It is too high"
else
echo "It is too low"
fi
done
提示:
expr用来求表达式的值,上面也可以写成PRICE=`expr $RANDOM % 1000`
let用来方便为变量赋值,且不需要加上$
PART 4:case语句
(case [模式1])...;;[模式2])...;;...*)...esac)#!/bin/bash
read -p "please input a key and press Enter:" KEY
case "$KEY" in
[a-z]|[A-Z])
echo "char"
;;
[0-9])
echo "num"
;;
*)
echo "else key"
esac
[root@okaka Desktop]# sh case_test.sh
please input a key and press Enter:r
char
[root@okaka Desktop]# sh case_test.sh
please input a key and press Enter:1
num
- Linux笔记之shell脚本4:条件语句
- shell 脚本编程之条件语句
- shell脚本之条件语句if和分支语句case...esac【shell脚本的学习笔记三】
- Linux学习之shell脚本——条件语句与循环语句
- 【Linux】中shell脚本语法篇之条件语句和循环语句
- Linux笔记之shell脚本3:测试语句
- Linux shell脚本之 if条件判断
- shell脚本条件语句编写
- Linux shell 条件语句
- Linux Shell条件语句
- Linux shell脚本编程if语句的使用方法(条件判断)
- Linux Shell编程之 for循环语句 if条件语句
- Shell脚本笔记2-条件
- LINUX shell 脚本语句
- Linux Shell脚本条件判断
- linux shell条件判断语句
- Linux Shell下条件语句:
- linux shell条件判断语句
- 迪杰斯特拉算法
- 基于用户投票的六大排名算法研究
- Ubuntu下配置samba实现文件夹共享
- Android与h5交互
- 微信公众号支付流程解读及支付签名验证方法
- Linux笔记之shell脚本4:条件语句
- 类别
- C++---------【多态性】之【静态多态性】
- Error:Execution failed for task ':app:processDebugManifest'. > Manifest merger failed with multiple
- 打程序应注意的一个问题
- MySQL下查看用户、建立用户、删除用户
- 安卓 UI 设计
- 如何编写一个带模糊查询的存储过程
- [离线+树状数组] HDU5869 Different GCD Subarray Query