3000字扫盲shell基础知识(新手必备)

2020-06-25 12:02:14刘景俊

执行结果:

[root@iz2ze0ajic0vbv28hcdctpz ~]# ./string.sh
apple = pen: apple 不等于 pen
apple != pen : apple 不等于 pen
-z apple : 字符串长度不为 0
-n apple : 字符串长度不为 0
apple : 字符串不为空

逻辑运算符

编写脚本:

#!/bin/bash
num1=5
num2=8
if [[ $num1 -lt 10 && $num2 -gt 5 ]]
then
 echo "返回 true"
else
 echo "返回 false"
fi

if [[ $num1 -lt 10 || $num2 -gt 5 ]]
then
 echo "返回 true"
else
 echo "返回 false"
fi

执行结果:

[root@iz2ze0ajic0vbv28hcdctpz ~]# ./logic.sh
返回 true
返回 true

文件测试运算符

编写脚本:

~ cat testfile.sh
#!/bin/bash

file="/root/testfile.sh"

if [ -r $file ]
then
 echo "该文件可读"
else
 echo "该文件不可读"
fi
if [ -x $file ]
then
 echo "该文件可执行"
else
 echo "该文件不可执行"
fi
if [ -w $file ]
then
 echo "该文件可写"
else
 echo "该文件不可写"
fi

if [ -f $file ]
then
 echo "该文件是普通文件"
else
 echo "该文件是非普通文件"
fi

if [ -s $file ]
then
 echo "该文件为空"
else
 echo "该文件不为空"
fi
if [ -d $file ]
then
 echo "该文件是目录"
else
 echo "该文件不是目录"
fi

执行脚本:

➜  ~ ./testfile.sh
该文件可读
该文件可执行
该文件可写
该文件是普通文件
该文件为空
该文件不是目录

shell条件判断&流程控制

其实流程控制的本质是差不多的,只是在语法上稍微有些差别,本节我们来盘一盘。

单分支if

流程示意图:

举例:

➜ if cat if-one.sh
#!/bin/bash
a=10

if [ a > 5 ]
then
 echo "a 大于 5"
fi

执行结果:

➜  if ./if-one.sh
a 大于 5

双分支if

流程示意图:

举例:

➜ if cat if-double.sh
#!/bin/bash
age=18
if [ $age -ge 18 ]; then
 echo "成年"
else
 echo "未成年"
fi

执行结果:

➜  if ./if-double.sh
成年

多分支if语句

流程示意图:

举例:

➜ if cat if-multi.sh
#!/bin/bash
money=10
if [ $money -lt 1 ]
then
 echo "1块钱都没有的比皮卡丘决定在家吃土"
elif [ $money -ge 1 -a $money -lt 5 ]
then
 echo "老板我要大白兔奶糖"
elif [ $money -ge 5 -a $money -le 10 ]
then
 echo "老板我要巧克力"
else
 echo "老板给我拿个鸡腿"
fi