美文网首页Kali LinuxBashBash
Linux - Bash - 流程控制

Linux - Bash - 流程控制

作者: 廖马儿 | 来源:发表于2018-01-10 14:22 被阅读8次

sh的流程控制不可为空,不能什么都不能做,不能像php这样:

<?php
if (isset($_GET["q"])) {
    search(q);
}
else {
    // 不做任何事情
}

在sh/bash里可不能这么写,如果else分支没有语句执行,就不要写这个else。


if else

if

if语句语法格式:

if condition
then
    command1 
    command2
    ...
    commandN 
fi

写成一行(适用于终端命令提示符):

if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi
if [ $(ps aux | grep -c "mysql") -gt 1 ]
then 
    echo "true" 
else
    echo "false" 
fi

这个bash命令是判断mysql是否运行,grep 有一个,如果运行一个Mysql就是2,就大于1了。

$() 是调用 命令 和 `` 相等。
这里的[]是用于test,不是用于数值计算, 不能用(( ))代替。

if else

if condition
then
    command1 
    command2
    ...
    commandN
else
    command
fi

if elif else

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

for 循环

for 循环的一般格式:

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

写成一行:

for var in item1 item2 ... itemN; do command1; command2… done;

案例:

for var in 1 2 3 4 5
do 
    echo "this value is: $var"
done

输出字符串:

for str in 'This is a string'
do
    echo $str
done

while 语句

while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式为:

while condition
do
    command
done

案例:
下面三种方式是一样额。

int=1
while (( $int <= 5 ))
do
    echo $int
    let "int++"
done

int=1
while [ $int -le 5 ]
do
    echo $int
    let "int++"
done

int=1
while test $int -le 5 
do
    echo $int
    let "int++"
done

let:的解释 let

自加操作:let no++
自减操作:let no--
简写形式 let no+=10,let no-=20,分别等同于 let no=no+10,let no=no-20。

let "a++"

let a++
都没有什么区别样。

echo "请输入(按下<ctrl+D可以退出>)"

echo -n '输入你最喜欢的网站名字:'

while read FILM ; do
    echo "是的, $FILM 是很好的网站"
done

while无限循环

while :
do
    command
done

或者:

while true
do
    command
done

经验:
1.我们在条件的时候如果取反,可以加!:

MAX_NO=0

echo -n "Enter Number between(5 to 9):"

read MAX_NO

echo $MAX_NO

if ![ $MAX_NO -ge 5 -a $MAX_NO -le 9]; then
    echo "WTF...I ask you to enter the number between 5 and 9, try again"
exit 1
fi 

相关文章

  • Linux - Bash - 流程控制

    sh的流程控制不可为空,不能什么都不能做,不能像php这样: 在sh/bash里可不能这么写,如果else分支没有...

  • linux bash流程控制while

    while condition do command done #!/bin/bash int=1 while((...

  • bash之流程控制

    一:if else 和Java、PHP等语言不一样,sh的流程控制不可为空在sh/bash里可不能这么写,如果el...

  • kubernetes基础实践之kubectl使用

    首先,要理解是的kubectl用来控制k8s集群的。就好比shell(比如:sh,bash)是控制linux/un...

  • 10个 Linux/Unix下 Bash 和 KSH shell

    背景: 阅读新闻 10个 Linux/Unix下 Bash 和 KSH shell 的作业控制实例 [日期:201...

  • Login Shell 和 Non-Login Shell.md

    [TOC] Login Shell 借用《鸟哥的linux私房菜》中的定义: 取得 bash 時需要完整的登入流程...

  • Shell 流程控制

    和Java、PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): 在sh/bash里可不能...

  • 八、Shell 流程控制

    和Java、PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): 在sh/bash里可不能...

  • Bash流程控制语句总结

    本文中的表格语法这一列表示各种语句的一个相对独立的语法单元,要在同一行执行它们,只要在它们中间插入分号即可(cas...

  • Bash 流程控制之术

    一、循环结构 1.1 for 循环 列表 for 循环: 不带列表的 for 循环: 类似 C 语言风格的 for...

网友评论

    本文标题:Linux - Bash - 流程控制

    本文链接:https://www.haomeiwen.com/subject/odugnxtx.html