逻辑结构、set

Shell_7_逻辑结构

老师笔记

一、if 判断

if ... then ... fi

单层
如果 是真的 那么 ...

if [ 条件判断式 ];then
   当条件判断式成立时,可以进行的命令。
fi   # 结束这个判断语句结构

if ... then ... else....fi

多重、复杂条件判断式
如果 是真的 那么 ... 否则 ...

if [ 条件判断式 ]; then
   当条件判断式成立时,可以进行的指令工作内容;
else
   当条件判断式不成立时,可以进行的指令工作内容;
fi

if ... elif ... elif ... else ... fi

多个条件判断 (if ... elif ... elif ... else) 分多种不同情况执行

if [ 条件判断式一 ]; then
   当条件判断式一成立时,可以进行的指令工作内容;
elif [ 条件判断式二 ]; then
   当条件判断式二成立时,可以进行的指令工作内容;
else
   当条件判断式一与二均不成立时,可以进行的指令工作内容;
fi

二、 利用 case ..... esac 判断

语法

case  $变量名称 in   <==关键字为 case ,还有变量前有钱字号
  "第一个变量内容")   <==每个变量内容建议用双引号括起来,关键字则为小括号 )
    程序段
    ;;            <==每个类别结尾使用两个连续的分号来处理!
  "第二个变量内容")
    程序段
    ;;
  *)                  <==最后一个变量内容都会用 * 来代表所有其他值
    不包含第一个变量内容与第二个变量内容的其他程序运行段
    exit 1
    ;;
esac                  <==反过来写,结束当前语句结构!
while true
do
    read -p ">>:" cho
    case ${cho} in
    1)
        echo "--> 1"
    ;;
    2)
        echo "--> 2"
    ;;
    3)
        echo "--> 3"
    ;;
    *)
        echo "无匹配"
    ;;
    esac
done

三、while ... do ... done (不确定的循环)

while [ condition ]  ==>中括号内的状态就是判断式
do            ==> do 是循环的开始!
    代码段
    代码段
done          ==> done 是循环的结束

计数

每次循环体执行完,while 都会检查条件是否为真,为真继续循环,否则终止循环。

n=0
while [ "$n" -lt 5 ]
do
   let n++
   echo "$n"
done

读文件

while read line
do
    echo $line
done < /etc/passwd

五、 for do done (固定的循环)

for var in con1 con2 con3 ...
do
    程序段
done

六、break 和 continue

break 跳出几层循环


continue 跳出本次循环


Shell_8_set用法

老师笔记

set -u

当脚本中遇到未定义的变量时,默认是忽略。
有时候这并不是开发者想要的。
假如有未定义的变量,应该报错,并且终止脚本继续运行。
set -u 就可以办到

示例
#!/usr/bin/env bash
set -u

echo $a
echo shark

//执行后报错
$ bash set.sh
set.sh: line 13: a: unbound variable

set -x

这个调试脚本是使用,可以看到每个执行的命令,和执行命令后的输出结果。

#!/usr/bin/env bash
set -x

echo shark
  • bash -x set.sh相同的含义。

set -e

脚本中有任何命令的返回值是非零,脚本则停止继续执行。
对管道的命令无效,比如:

foo | echo shark

foo 不是 shell 中的命令,执行会报错,但是其后面有个管道
最终管道后的 echo 命令执行成功了,这种情况下 脚本会继续执行。

set -o pipefail

如果设置,如果管道中的所有命令都成功退出,则返回零。 默认情况下禁用此选项

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,819评论 0 10
  • 流程控制 if 单条件 双分支 多分支 case case支持glob风格的通配符: *: 任意长度任意字符?: ...
    毛利卷卷发阅读 772评论 0 1
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,779评论 0 11
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,906评论 0 38
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,465评论 0 5