-
while循环
while循环是不定循环,也称作条件循环。只要条件判断式成立,循环就会一直继续,直到条件判断式不成立,循环才会停止。这就和for的固定循环不太一样了。
while[条件判断式]
do
程序
done
实例1
#!/bin/bash
#从1加到100
i=1
s=0
while [ $i -le 100 ]
#如果变量i的值小于等于100,则执行循环
do
s=$(( $s+$i ))
i=$(( $i+1 ))
done
echo "The sum is:$s"
实例2
#!/bin/bash
#从1加到100
i=1
s=0
while [ $i -gt 100 ]
#如果变量i的值小于等于100,则执行循环
do
s=$(( $s+$i ))
i=$(( $i+1 ))
done
echo "The sum is:$s"
查看全部 -
所有shell数值运算都要用(())括起来
批量添加指定数量的用户实例
#!/bin/bash
#批量添加指定数量的用户实例
read -t 30 -p "input user name:" name
read -t 30 -p "input password:" pass
read -t 30 -p "input user number:" num
#检查输入内容是否为非空
if [ -n "$name" -a -n "$pass" -a -n "$num" ]
then
#检查输入的用户数量是否为纯数字
chknum=$( echo "$num" | sed 's/[0-9]//g' )
if [ -z "$chknum" ]
then
for (( i=1;i<="$num";i=i+1 ))
do
#添加用户
/usr/sbin/useradd $name$i &>/dev/null
#添加用户密码,passwd 的--stdin参数是非交互输入,直接传入密码,不需要第二次确认
echo $pass | /usr/bin/passwd --stdin $name$i &>/dev/null
echo "add $i complete"
done
else
echo "the num must be number"
fi
else
echo "input can not be null,please input"
fi
cat /etc/passwd | grep /bin/bash | grep -v /root | cut -d ":" -f 1
批量删除用户实例
#!/bin/bash
#批量删除用户
user=$(cat /etc/passwd | grep "/bin/bash" | grep -v root | cut -d ":" -f 1)
for i in $user
do
#删除用户,-r参数是删除用户家目录
/usr/sbin/userdel -r $i
done
查看全部 -
for循环
语法1:
for 变量 in 值1 值2 值3 …
do
程序
done
示例1
#!/bin/bash
for i in 1 2 3 4 5
do
echo $i
done
示例2
##!/bin/bash
cd /root/test
ls *.tar.gz > ls.log
for i in $( cat ls.log )
do
tar -czf $i &>/dev/null
#把执行过程中所有输出信息丢到回收站,不显示在屏幕上
done
rm -rf ls.log
查看全部 -
多分支case条件语句
case语句和if...elif...else语句一样都是多分支条件语句,不过和if多分支条件语句不同的是,case语句只能判断一种条件关系,而if语句可以判断多种条件关系。
case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
…省略其他分支.…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
vi case.sh
#!/bin/bash
read -t 30 -p "please input yes/no:" cho
case "$cho" in
"yes")
echo "yes"
;;
"no")
echo "no"
;;
*)
echo "please input yes/no again!!!"
;;
esac
查看全部 -
多分支if条件语句
if [ 条件判断式1 ]
then
条件成立时,执行的程序
elif [ 条件判断式2 ]
then
条件不成立时,执行另一个程序
else
当所有条件都不成立时,最后执行的程序
fi
查看全部 -
vi apache.shujuku #注意文件名不要取httpd
#!/bin/bash
test=$(ps aux | grep httpd | grep -v grep)
#截取httpd进程,把结果赋给变量test
if [ -n "$test" ] #-n非空,执行then中命令
then
echo "httpd is open!"
else
echo "httpd is closed!!"
fi
查看全部 -
meigong chengxu shujuku apache linux fuwuqi yuming IP daikuan www
美工 程序 数据库 apache服务 linux 服务器 域名 IP地址 带宽 网页
www.netcraft.com #网页查看一些服务器数据统计
ps aux | grep httpd | grep -v grep #查询httpd是否启动
查看全部 -
双分支if条件语句
if [ 条件判断式 ]
then
条件成立时,执行的程序
else
条件不成立时,执行另一个程序
fi
举例:
vi if3.sh
#!/bin/bash
read -t 30 -p "Please input a dir:" dir
if [ -d "$dir" ] #如果输入的是一个目录
then
echo "is a directory"
else
echo "is not a directory"
fi
查看全部 -
df -h | grep "/dev/sda5" | awk '{print $5}' | cut -d "%" -f 1
判断分区使用率
vi if2.sh
#!/bin/bash
test=$(df -h | grep "/dev/sda5" | awk '{print $5}' | cut -d "%" -f 1)
echo $test #sda5分区使用率
if [ "$test" -ge "90" ] #-ge大于等于90
then
echo "/ is full!根磁盘已满!"
fi
查看全部 -
单分支if条件语句
if [ 条件判断式 ];then
程序
fi
或者
if [ 条件判断式 ]
then
程序
fi
单分支条件语句需要注意几个点
if语句使用fi结尾,和一般语言使用大括号结尾不同
[条件判断式]就是使用test命令判断,所以中括号和条件判断式之间必须有空格
then后面跟符合条件之后执行的程序,可以放在[]之后,用";"分割。也可以换行写入,就不需要";"了
判断登陆的用户命令
whoami
env #USER=root
env | grep USER | cut -d "=" -f 2 #筛选USER,以分隔符"="进行分割,提取第二个字段
例子1:判断登陆的用户是否root
vi if1.sh
#!/bin/bash
test=$(env | grep "USER" | cut -d "=" -f 2)
#echo $test
if [ "$test" == root ]
then
echo "Current user is root."
fi
查看全部 -
学习小脚本实例的好处:
1、掌握语法结构
2、了解shel的作用
3、分析编程思想
建立编程思想的方法:
1、熟悉Linux基本命令、规范、语法及shell语法
2、当遇到实际需求时,应用所学知识
如何“背”程序?
1、抄写老师的程序并能正确运行
2、为程序补全注释
3、删掉注释,为代码重新加注释
4、看注释写代码
5、删掉代码和注释,从头开始写
查看全部 -
多重条件判断
测试选项 作用
判断1 -a 判断2 逻辑与,判断1和判断2都成立,最终的结果才为真
判断1 -o 判断2 逻辑或,判断1和判断2有一个成立,最终的结果就为真
! 判断 逻辑非,使原始的判断式取反
举例:
[ "$aa" == "$bb" -a "$aa" -gt 3] && echo "yes" || echo "no"
查看全部 -
字符串的判断
测试选项 作用
-z 字符串 判断字符串是否为空(为空返回真)
-n 字符串 判断字符串是否为非空(非空返回真)
字串1 == 字串2 判断字符串1是否和字符串2相等(相等返回真)
字串1 != 字串2 判断字符串1是否和字符串2不相等(不相等返回真)
举例:
name=fengj
[ -z $name ] && echo "yes" || echo "no"
name=""
[ -z $name ] && echo "yes" || echo "no"
aa=11
bb=22
[ "$aa" == "$bb" ] && echo "yes" || echo "no" #判断两个变量的值是否相等,明显不相等,所以返回no
查看全部 -
两个整数之间的比较
测试选项 作用
整数1 -eq 整数2 判断整数1是否和整数2相等(相等为真)
整数1 -ne 整数2 判断整数1是否和整数2不相等(不相等位置)
整数1 -gt 整数2 判断整数1是否大于整数2(大于为真)
整数1 -lt 整数2 判断整数1是否小于整数2(小于位置)
整数1 -ge 整数2 判断整数1是否大于等于整数2(大于等于为真)
整数1 -le 整数2 判断整数1是否小于等于整数2(小于等于为真)
举例:
[ 23 -ge 22 ] && echo "yes" || echo "no"
查看全部 -
两个文件之间的比较
测试选项 作用
文件1 -nt 文件2 判断文件1的修改时间是否比文件2的新(如果新则为真)
文件1 -ot 文件2 判断文件1的修改时间是否比文件2的旧(如果旧则为真)
文件1 -ef 文件2 判断文件1是否和文件2的Inode号一致,可以理解为两个文件是否为同一个文件。这个判断用于判断硬链接是很好的方法
举例:
ln /root/student.txt /tmp/stu
[ /root/student.txt -ef /tmp/stu ] && echo "yes" || echo "no"
查看全部
举报