read命令
作用:从键盘读入数据,赋给变量
测试脚本:
[root@VM_16_6_centos ~]# cat read.sh
#!/bin/bash
echo "请输入三个数字:"
read param1 param2 param3
echo "参数1:$param1"
echo "参数2:$param2"
echo "参数3:$param3"
执行测试脚本:
[root@VM_16_6_centos ~]# sh read.sh
请输入三个数字:
11 22 33
参数1:11
参数2:22
参数3:33
expr命令
作用:对整数型变量进行算数运算,运算符之间必须要有空格
[root@VM_16_6_centos ~]# expr 3 + 5
8
[root@VM_16_6_centos ~]# var1=8
[root@VM_16_6_centos ~]# var2=2
[root@VM_16_6_centos ~]# expr $var1 + $var2
10
[root@VM_16_6_centos ~]# expr $var1 - $var2
6
[root@VM_16_6_centos ~]# expr $var1 / $var2
4
[root@VM_16_6_centos ~]# expr $var1 \* $var2
16
[root@VM_16_6_centos ~]# var1=8
[root@VM_16_6_centos ~]# expr `expr 5 + 11` / $var1
2
[root@VM_16_6_centos ~]# var2=8
[root@VM_16_6_centos ~]# var3=2
[root@VM_16_6_centos ~]# var4=`expr $var2 / $var3`
[root@VM_16_6_centos ~]# echo $var4
4
[root@VM_16_6_centos ~]# expr 4 - 7
-3
test:变量测试语句
测试范围:整数、字符串,文件
-
测试字符串和变量:
test str1!=str2 #测试是否不相等
test str1不为空,则返回结果为真
test -n str1 #如果字符串长度为0,则返回结果为真 -
测试整数:
test int1 -eq int2 #测试两个数是否相等
test int1 -ge int2 #>=
test int1 -gt int2 #>
test int1 -le int2 #<=
test int1 -lt int2 #<
test int1 -ne int2 #测试两个数是否不相等
注:也可省略test,简写为:[int1 -lt int2]
- 测试文件:
test -d file #测试是否为目录
test -f file #测试是否为文件
test -x file #测试是否是可执行的
test -r file #测试文件是否可读
test -w file #测试文件是否可写
test -e file #测试文件是否存在
test -s file #测试文件大小是否为空文件(0:空文件)
test -c file #测试文件是否是字符特殊文件
test -b file #测试文件是否是块设备(光驱、软盘等)文件
注:也可省略test,简写为:[ -x file]
if流程控制
- if
一下两种if写法均可:
[root@VM_16_6_centos ~]# cat if.sh
#!/bin/bash
echo "if test"
if [ -x /bin/ls ] ; then
/bin/ls
fi
echo "========================"
if [ -x /bin/ls ]
then
/bin/ls
fi
[root@VM_16_6_centos ~]# bash if.sh
if test
example.sh if.sh read.sh redis-stable.tar.gz z.sh
========================
example.sh if.sh read.sh redis-stable.tar.gz z.sh
[root@VM_16_6_centos ~]#
- if-else
[root@VM_16_6_centos ~]# cat if-else.sh
#!/bin/bash
if [ -x /etc/passwd ] ; then
/bin/ls
else
pwd
fi
[root@VM_16_6_centos ~]#
[root@VM_16_6_centos ~]# sh if-else.sh
/root
[root@VM_16_6_centos ~]# chmod +x /etc/passwd
[root@VM_16_6_centos ~]# sh if-else.sh
example.sh if-else.sh if.sh read.sh redis-stable.tar.gz z.sh
- 多条件联合
-a 或 &&:逻辑与,当两个条件都为真时,结果为真
-o 或 ||:逻辑或,两个条件有一个成立,结果为真
[root@VM_16_6_centos ~]# cat elif.sh
#!/bin/bash
echo "input a file name:"
read file_name
if [ -d $file_name ] ; then
echo " $file_name is a dir"
elif [ -f $file_name ] ; then
echo " $file_name is file"
elif [ -c $file_name -o -b $file_name ] ; then
echo " $file_name is a device file"
else
echo " $file_name is an unknow file "
fi
[root@VM_16_6_centos ~]#
[root@VM_16_6_centos ~]# sh elif.sh
input a file name:
/root/
/root/ is a dir
[root@VM_16_6_centos ~]# sh elif.sh
input a file name:
/root/elif.sh
/root/elif.sh is file
[root@VM_16_6_centos ~]# sh elif.sh
input a file name:
/dev/tty0
/dev/tty0 is a device file
[root@VM_16_6_centos ~]# sh elif.sh
input a file name:
/top/aaaaa
/top/aaaaa is an unknow file
[root@VM_16_6_centos ~]#
网友评论