shell-2.read命令、expr算数表达式、test变量测

2020-03-07  本文已影响0人  青丝如梦

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,简写为:[int1 -lt int2]

注:也可省略test,简写为:[ -x file]

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 ~]# 
[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
[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 ~]# 
上一篇 下一篇

猜你喜欢

热点阅读