shell脚本个人学习&复习记录PART-01:CSDN
7、shell的流程控制语句
if语句
数字判断
-eq:等于
-ne:不等于
-gt:大于
-lt:小于
-ge:大于等于
-le:小于等于
字符串判断
文件判断
#if格式
#判断系统中是否有多个ssh进程,如果有则打印true
#!/bin/bash
if [ $(ps -ef | grep -c "ssh") -gt 1 ] #中括号前后必须加空格
then
echo "true"
fi
#判断某个路径下的文件是否存在,不存在就创建
#!/bin/bash
DIR="/media/cdrom"
if [ ! -e $DIR ] #中括号前后必须加空格
then
mkdir -p $DIR
fi
#if else格式
#根据输入年龄判断是否成年
#!/bin/bash
read -p "Enter your age(1-100):" age #这里的-p表示read的提示符,后面的字符串是直接echo,且在一行上,如果用echo则会换行
if [ $age -ge 18 ] #等价于if test $age -ge 18
then
echo "已成年"
else
echo "未成年"
fi
#if elseif格式elif
#判断两个数值变量的大小
#!/bin/bash
read -p "请输入a变量:" a
read -p "请输入b变量:" b
if test $a -eq $b
then
echo "a等于b"
elif test $a -gt $b
then
echo "a大于b"
elif test $a -lt $b
then
echo "a小于b"
else
echo "条件不符合"
fi
#多条件判断
#!/bin/bash
read -p "请输入你的分数:" score
if test $score -ge 85 && test $score -le 100;then
echo "优"
elif test $score -ge 70 && test $score -le 84;then
echo "良"
elif test $score -ge 60 && test $score -le 69;then
echo "合格"
else
echo "不合格"
fi
for语句
#输出1-5
#!/bin/bash
for i in 1 2 3 4 5
do
echo "---$i---"
done
#模仿ls命令,脚本第一个参数路径若存在则输出该路径下的文件名,否则输出当前路径下的文件名
#!/bin/bash
dir="" #定义一个变量接收路径
if test -z $1 ; then #-z string,表示变量string为零则返回true,拓展-n相反
dir=$PWD
else
dir=$1
fi
for file in $(ls $dir) #ls dir的文件名,根据脚本传入的第一个参数路径,若无,则ls当前路径
do
echo "------$file"
done
#for循环输出1-5
#!/bin/bash
for ((i=1;i<=5:i++))
do
echo $i
done
#for循环累加1-100的和
#!/bin/bash
sum=0
for ((i=1;i<=100;i++))
do
#sum=$((sum=sum+i))
#sum=$[sum=sum+i]
let sum+=i #推荐用这种,加let关键字可以按照高级语言识别某些命令
done
#for死循环
#!/bin/bash
for ((;;))
do
echo "hello"
sleep 1
done
while语句
#while循环输出1-5
#!/bin/bash
i=1
while test $i -le 5
do
echo $i
let i++
done
#while循环输出1-100的和
#!/bin/bash
i=1
sum=0
while test $i -le 100
do
let sum+=i
let i++
done
echo $sum
#while死循环
while : #这里冒号可以用true代替,效果一样
do
echo "hello"
sleep 1
done
case语句
#!/bin/bash
read -p "choose(1-3):" num
case $num in
1)
echo "choose1"
;;
2)
echo "choose2"
;;
3)
echo "choose3"
;;
*)
echo "choose other"
;;
esac
#case穿透
#!/bin/bash
read -p "choose(1-3):" num
case $num in
1|2|3)
echo "choose1or2or3"
;;
*)
echo "choose other"
;;
esac
break和continue与java一样,break跳过本层循环,continue跳过本次循环