Shell编程2

控制结构语句

顺序结构

顺序结构是指Shell语句的执行是按语句的顺序逐条执行的。
由于简单,此结构不写例题。

选择结构

if-then-elif-else-fi 
#用来执行选择结构

常见的格式

if expression
  then
  then -command
fi
if expression
   then
   command-list
else
   command-list
 fi
if expressionl
   then
   then1-commands
elif expressionl
    then
    then1-commands
 .....
else
   else-command
fi

对于这三种格式,我们通过具体代码来看看其用法。
在此之前我们先了解一下,如何判断表达式的值。

test [expression] #检测一个表达式并返回true或者false
[[expression]] #检测一个表达式并返回true或者false

注意操作数和操作符之间至少保留一个空格。
表达式的三种比较
字符串比较

字符串比较 结果
string1 = string2 如果两个字符串相同则结果为真
string1 != string2 如果两个字符串不同则结果为真
-n string 如果字符串不为空则结果为真
-z string 如果字符串为空则结果为真

算数比较

算术比较 结果
expression1 -eq expression2 如果两个表达式相等则结果为真
expression1 -ne expression2 如果两个表达式不等则结果为真
expression1 -gt expression2 如果expression1大于expression2则结果为真
expression1 -ge expression2 如果expression1大于或等于expression2则结果为真
expression1 -lt expression2 如果expression1小于expression2则结果为真
expression1 -le expression2 如果expression1小于或等于expression2则结果为真
! expression 如果表达式为假则结果为真,反之亦然

文件测试

文件条件测试 结果
-d file 如果文件是一个目录则结果为真
-f file 如果文件是一个普通文件则结果为真
-e file 如果文件存在则结果为真
-g file 如果文件的SGID位被设置则结果为真
-r file 如果文件可读则结果为真
-s file 如果文件的长度不为0则结果为真
-u file 如果文件的SUID位被设置则结果为真
-w file 如果文件条件可写则结果为真
-x file 如果条件可执行则结果为真

在了解了这些知识的情况下,我们可以看三个例题
例题1
利用内部变量和位置参数编写一个名为Shell211的简单删除程序,如果删除的文件名位a,则在终端输入的命令位 Shell211 a

循环结构

for

for variable [in argument-list]
do
command -list
done

解释:argument-list 中的词被注意赋值给variable,然后执行一次command-list中的命令,这种结构通常被称作循环体。
例如:
在这里插入图片描述

  • IFS
    IFS是“内部区域分割符”,他是一个内置环境变量,存储着默认的文本分隔符,在默认的情况下分隔符是空格符,制表符以及换行符。
    在这里插入图片描述
    在这里插入图片描述
    while
    由for循环的例题我们知道,它特别适合对一系列字符串进行处理,但进行执行特定次数的情况特别难。一次我们用while循环
while expression
do
  command-list
done

在这里插入图片描述
until

until expression
do
command-list
done

until与while类似但含义不同,until中当expression中的值位假时执行循环体。

case
case语句提供了一种同嵌套的if语句类似的多路跳转功能,但case语句提供的结构可读性更好。

其他几个常用的语句

  • break
    打断循环体,执行done后面的语句。永远的终止循环
  • continue
    跳转后done命令后再次判断循环条件是否满足循环,如果满足则开始一次新的循环
  • exit
exit n
退出码 说明
126 文件不可以执行
127 命令未找到
128及其以上 发现一个信号
  • printf
    此命令用于格式化输出,类似与c语言。
printf "format string" parameter1 parameter2.....

数值处理

在Linux系统中Bash变量的值是以字符串格式来存储的。如果需要进行算数和逻辑运算,必须先将字符串转换为整数,得到运算结果后在转换回字符串,以便正确保存在Shell变量中。

  • let
    用来计算算术表达式的值。
let express-list

如果最后的表达式取值为0,let命令返回1,否则返回0。
在这里插入图片描述

  • Shell拓展$((expression))
    在这里插入图片描述
    在这里插入图片描述
  • expr命令
    将它的参数当作一个表达式来求值。

posted on 2019-09-18 13:48  一颗小白杨站在哨所旁  阅读(121)  评论(0编辑  收藏  举报

导航