条件判断式
if..then、case..esac
if..then 是最常见的条件判断式,就是当负某个条件判断的时候,就进行某项工作 ,其中"&&"代表AND,"||"代表or
if....then..else...fi
格式:
1
2
if [条件判断语句]; then 当条件判断成立时,可以进行的命令工作内容;
fi // 结束if条件判断
例子:设定 A=3,判断,如果A要是等于3,就会显示3
1
2
3
if [ $A = 3 ]; then
ehco "true"
fi
1、当条件不满足时的条件判断
1
2
3
4
5
if [ $A = 3 ]; the
echo "true" // 当A=3的时候就显示true
else
echo "error" // 当A不等于3的时候就显示error
fi
2、当多个条件判断时 if..then..elif...then..fi
1
2
3
4
5
6
7
8
9
if [ $A = 3 ];then
echo "3" // 当A等于3的时候,就显现3
elif [ $A = 4 ]; then
echo "4" // 当A等于4的时候,就显现4
elif [ $A = 5 ];then
echo "5" // 当A等于5的时候,就显现5
else
echo "error" // 当A即不等于3也不等于4也不等于5的时候,就显现error
fi
3、当多层次的条件判断时,而且有多个既定的变量内容,就可以用到case..in..esac。它的语法如下:
1
2
3
4
5
6
7
8
9
10
11
12
case $变量名称 in
"第一个变量取值")
语句
;; // 每个判断语句结束都要有双分号隔开
"第二个变量取值")
语句
;;
*) // 其它变量的取值*号表示
语句
exit
;;
esac // case的结尾
例:假如A在2、3这2个数之间取值,假如A等于2就显示2,等于3就显示3,既不是2也不是3就显示other
1
2
3
4
5
6
7
8
9
10
11
12
13
read -p "input a: " A
case $A in
2)
echo "2" // 如果A的取值为2,则就显示2
;; // 每个判断语句结束都要有双分号隔开
3)
echo "3" // 如果A的取值为3,则就显示3
;;
*)
echo "other" // 如果A的取值即不为2也不为3,则就显示other
exit // 退出判断
;;
esac
循环式
㈠循环式 while..do..done 、 until..do..done 、 for..do..done
while循环就是当条件成立时,就不断的循环,直到条件不满足才停止循环,格式如下:
1
2
3
while [ 条件判断] ; do
当条件满足的时候需要循环的程序
done
例子:用户输入任意字符时,我们都显示,你输入的是: 只有当用户输入Q或q时,我们才退出:
1
2
3
4
5
6
7
#!/bin/bash
#
while [ "$A" != 'Q' -a "$A" != 'q' ]; do
echo "Input:$A"
echo // 此行显示为空格
read -p "Please input something: " A
done
例子:求100内所有整数之和:
1
2
3
4
5
6
7
8
9
#!/bin/bash
#
declare -i SUM=0
declare -i A=1
while [ $A -le 100 ]; do
SUM=$[$SUM+$A]
let A++ // 让A不断的循环自加,直到A的值小与等于100的时候停止
done
echo "SUM is $SUM"
㈡而与while相反就是until,它的意思就是,当条件不成立时,就进行循环
until [条件判断] do
当条件不成立时,就不断的循环的程序
done
for..in..do..done的用法
例子显示每一位用户的默认shell:
1
2
3
4
5
#!/bin/bash
#
for I in `cut -d: -f1 /etc/passwd`; do
echo "$I:`grep "^$I\>:" /etc/passwd | cut -d: -f7`"
done
函数的应用
写一个脚本:
1、提示用户输入一个用户名;
2、使用函数实现:
判断一个用户是否存在,用户名通过参数传递而来;
如果存在,就显示此用户的shell和UID
如果不存在,就说此用户不存在;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
#
name() {
if id $1 &> /dev/null; then
echo `id -u $1`, shell: `grep "^$1\>:" /etc/passwd | cut -d: -f7`
return 0
else
echo "NO such this user."
return 1
fi
}
read -p "Input a user" USER
until [ "$USER" = "q" -o "$USER" = "Q" ]; do
name $USER
read -p "New User: " USER
done
⑴条件测试:用[]将测试的条件括住,如:[2 + 3]
整数的比较为双目操作,也就是多个整数比较:NUM1操作符NUM2
-eq 等于 #test 2 -eq 3
-ne 不等于
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
⑵算术运算符
+ 加 - 减 * 乘 / % 余数 ^ 指数
例子:2+3等于5的多种表示方法
1、#sum=$[2+3]
#echo $sum
2、#sum=$((2+3))
#echo $sum
3、#let sum=2+3
#echo $sum
4、#expr 2 + 3 ----> 中间必须得有空格
例子:5除以3的余数是否为0
#[ $[5%3] -eq 0 ] ----> 括符两边有空格
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com