1、if 语句:
主要用于判断,相当于java se中的if,我们还是采用之前的例子test-shell.sh
if condition
then
command1
command2
...
commandN
fi
比如,我们现在通过前面学习的知识查找一个进程,如果进程存在就打印true
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi
注意:末尾的fi就是if倒过来拼写
执行效果如下
2、if else 语句:
主要用于判断,相当于java se中的if else,我们还是采用之前的例子test-shell.sh。
if condition
then
command1
command2
...
commandN
else
command
fi
上接上面的例子,如果找不到sshAAA(此处可以随便输入一个)进程,我们就打印false
if [ $(ps -ef | grep -c "sshAAA") -gt 1 ]; then echo "true"; else echo "false"; fi
执行效果如下
3、if else-if else 语句:
主要用于判断,相当于java se中的if else-if else
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
以下实例判断两个变量是否相等
我们继续使用上面的例子(test-shell.sh )
a=10
b=20
if [ $a == $b ]
then
echo "a 等于 b"
elif [ $a -gt $b ]
then
echo "a 大于 b"
elif [ $a -lt $b ]
then
echo "a 小于 b"
else
echo "没有符合的条件"
fi
执行效果如下
4、for 循环
主要用于循环,相当于java se中的for循环,我们还是采用之前的例子test-shell.sh
for循环格式为
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
顺序输出当前列表中的字母:
for loop in A B C D E F G
do
echo "顺序输出字母为: $loop"
done
执行效果如下
5、while循环
主要用于循环,相当于java se中的while循环
while循环用于不断执行一系列命令,也用于从输入文件中读取数据
语法格式为
while condition
do
command
done
以下是一个基本的while循环,测试条件是:如果int小于等于10,那么条件返回真。int从0开始,每次循环处理时,int加1。
还是采用之前的例子test-shell.sh
#!/bin/bash
int=1
while(( $int<=10 ))
do
echo "输出的值为:"$int
let "int++"
done
执行效果如下图
6、case ... esac语句
主要用于分支条件选择,相当于java se中的switch case循环
case ... esac 与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 case ... esac 语句,esac(就是 case 反过来)作为结束标记。
还是采用之前的例子test-shell.sh
case ... esac 语法格式如下:
case 值 in
模式1)
command1
command2
command3
;;
模式2)
command1
command2
command3
;;
*)
command1
command2
command3
;;
esac
case 后为取值,值可以为变量或常数。
值后为关键字 in,接下来是匹配的各种模式,每一模式最后必须以右括号结束,模式支持正则表达式。
下面通过v的值进行case--esac
v="czbk"
case "$v" in
"czbk") echo "传智播客"
;;
"baidu") echo "baidu 搜索"
;;
"google") echo "google 搜索"
;;
esac
执行效果如下