变量名称规则:只能以字母、数字、下划线组成,并且开头不能是数字。不能重名
bash中如何实现条件判断:
条件测试类型:整数测试,字符测试,文件测试
条件测试的表达式:
[expression]
[[expression]]
test expression
整数比较:
-eq:测试两个整数是否相等,比如 $A -eq $B
[root@bogon ~]# A=2
[root@bogon ~]# B=3
[root@bogon ~]# [$A -eq $B]
-bash: [2: command not found
[root@bogon ~]# [ $A -eq $B ]
[root@bogon ~]# echo $?
1
[root@bogon ~]# B=2
[root@bogon ~]# [ $A -eq $B ]
[root@bogon ~]# echo $?
0
-ne:测试两个数不等,不等为真,相等为假
-gt:左大于右测试
-lt:左小于右
-ge:大于或等于
-le:小于或等于
命令间的逻辑关系:
逻辑与:&&
逻辑或:||
查看用户:
[root@bogon ~]# ls /home
blare hadoop hive tom user1 user3 user5 user6 user66 vergong
[root@bogon /]# id user3 && echo "hello,student."
uid=2002(user3) gid=1002(user3) groups=1002(user3),502(mygroup)
hello,student.
如果user3存在则大于0,&&后面得到执行
把id输出的信息重定向:
[root@bogon /]# id user3 &> /dev/null && echo "hello,student."
hello,student.
[root@bogon /]# nano second.sh
GNU nano 2.0.9 File: second.sh
#!/bin/bash
LINES=`wc -l /etc/inittab`
echo $LINES
[root@bogon /]# chmod +x second.sh
[root@bogon /]# ./second.sh
wc -l /etc/inittab
[root@bogon /]# nano second.sh
[root@bogon /]# ./second.sh
26 /etc/inittab
#!/bin/bash
LINES=`wc -l /etc/inittab`
#echo $LINES
FINLINAES=`echo $LINES |cut -d' ' -f1`
#echo $FINLINAES
[ $FINLINAES -gt 100 ] && echo "/etc/inittab is a big file." || echo "/etc/inittab is a small file."
条件判断,控制结构
单分支if语句
if 判断条件;then
ststatement1;
ststatement2;
.....
fi
双分支的if语句:
if 判断条件;then
ststatement1;
ststatement2;
.....
else
ststatement1;
ststatement2;
.....
fi
[root@bogon ~]# nano usertest.sh
[root@bogon ~]# chmod +x usertest.sh
[root@bogon ~]# ./usertest.sh
GNU nano 2.0.9 File: usertest.sh
#!/bin/bash
#
NAME=user1
if id $NAME &> /dev/null;then
echo "$NAME exists."
else
echo "$NAME no exists."
fi
[root@bogon ~]# nano usertest1.sh
[root@bogon ~]# chomod +x usertest1.sh
-bash: chomod: command not found
[root@bogon ~]# chmod +x usertest1.sh
[root@bogon ~]# ./usertest1.sh
common user
GNU nano 2.0.9 File: usertest1.sh
NAME=user3
if [ `id -u $NAME` -eq 0 ]; then
echo "Admin"
else
echo "common user"
fi
shell中进行算术运算:
1、let算术运算表达式
[root@bogon ~]# A=4
[root@bogon ~]# B=6
[root@bogon ~]# let c=$A+$B
[root@bogon ~]# echo $C
[root@bogon ~]# echo $c
10
2、$[算术运算表达式]
[root@bogon ~]# A=5
[root@bogon ~]# B=5
[root@bogon ~]# C=$[$A+$B]
[root@bogon ~]# echo $C
10
[root@bogon ~]# A=5
[root@bogon ~]# B=5
[root@bogon ~]# C=$(($A+$B))
[root@bogon ~]# echo $C
10
4、expr算术运算表达式,表达式中各操作数及运算符之间要加空格
[root@bogon ~]# A=5
[root@bogon ~]# B=5
[root@bogon ~]# F=`expr $A + $B`
[root@bogon ~]# echo $F
10