在Shell脚本中,if-else使用方法如下:
if [测试条件]
then
测试条件成立执行
else
条件不成立执行
fi
cat << CCC >> testIfElse.sh
表示只有遇到CCC
才结束往testIfElse.sh
写入文件。<< CCC
表示后续的输入作为子命令或者子Shell的输入,直到命令又遇到CCC
,再次返回到主调Shell,可将CCC
其理解为分界符(delimiter),当然在不与系统其他命令冲突的话,可以定义其他分界符,比如EOF
,DelimiterEnd
等。
下边的内容每输入一行就按一下回车键:
#!/bin/bash
if test 6 -gt 5
then
echo "6 > 5"
else
echo "wrong"
fi
CCC
chmod 777 testIfElse.sh
为所有的用户加上读写执行权限,./testIfElse.sh
进行执行。
只要写在then
和else
之间的语句都是测试条件正确应该执行的,而写在else
和fi
之间都是测试条件错误应该执行的语句。
testIfElse1.sh
里边的内容如下:
#!/bin/bash
# test with variable
echo "name ${0}"
echo "variable's number is $#"
echo "first variable is $1"
if [ $# -eq 2 ]
then
echo "variable's number = 2"
echo "the second variable is $2"
else
echo "variable's number is not two"
echo "wrong"
fi
这段代码首先把name
+程序名
输出,然后把variable's number is
+输入的变量个数
输出,之后输出first variable is
+第一个变量名
输出,上边的输出不管测试条件是否正确都会输出。
测试条件正确的话(即输入的变量个数等于2)会输出:
variable’s number = 2
the second variable is第二个变量名
测试条件错误的话会输出:
variable’s number is not two
wrong
chmod 777 testIfElse1.sh
为所有的用户加上读写执行权限,./testIfElse1.sh good learn
进行执行输出内容如下:
name ./testIfElse1.sh
variable's number is 2
first variable is good
variable's number = 2
the second variable is learn
./testIfElse1.sh good learn "make progress"
执行输出的内容如下:
name ./testIfElse1.sh
variable's number is 3
first variable is good
variable's number is not two
wrong
要是测试条件分支比较多的话,那么可以使用底下的格式:
if [测试条件]
then
测试条件成立执行
elif [测试条件]
then
测试条件成立执行
else
条件不成立执行动作
fi
testIfElse2.sh
里边的内容如下:
#!/bin/bash
# test with variable
echo "name ${0}"
echo "variable's number is $#"
echo "first variable is $1"
if [ $# -eq 2 ]
then
echo "variable's number = 2"
echo "the second variable is $2"
elif [ $# -eq 3 ]
then
echo "variable's number = 3"
echo "the second variable is $3"
else
echo "variable's number is not two"
echo "wrong"
fi
基本逻辑就跟上边testIfElse1.sh
一样,但是多了一段elif
的判断逻辑,就是若输入的变量个数等于3
的话,就会输出:
variable’s number = 3
the second variable is第三个变量名
chmod 777 testIfElse2.sh
为所有的用户加上读写执行权限,./testIfElse2.sh 111 222
的执行结果如下:
name ./testIfElse2.sh
variable's number is 2
first variable is 111
variable's number = 2
the second variable is 222
./testIfElse2.sh 111 222 333
的执行结果如下:
name ./testIfElse2.sh
variable's number is 3
first variable is 111
variable's number = 3
the second variable is 333
./testIfElse2.sh
的执行结果如下:
name ./testIfElse2.sh
variable's number is 0
first variable is
variable's number is not two
wrong
此文章为7月Day 23学习笔记,内容来源于极客时间《Linux 实战技能 100 讲》。