DJ8-4 shell 语句的分类、shell 的结构性语句

这篇具有很好参考价值的文章主要介绍了DJ8-4 shell 语句的分类、shell 的结构性语句。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

8.7  shell 编程

8.7.1  shell 编程的基本过程

8.7.2  实例

8.7.3  shell 程序和语句

8.8  说明性语句和功能性语句

8.8.1  说明性语句(注释行)

8.8.2  常用的功能性语句

8.9  结构性语句

8.9.1  条件语句 if

8.9.2  测试语句 test

8.9.3  多路分支语句 case…esac

8.9.4  循环语句 for…do…done

8.9.5  循环语句 while…do…done

8.9.6  循环控制语句 break 和 continue


8.7  shell 编程

8.7.1  shell 编程的基本过程

包含以下三步:

  1. 创建 shell 文件,即后缀名为 .sh 的文件
  2. 赋予 shell 文件执行权限,即使用 chmod 命令修改权限
  3. 执行 shell 文件,即在命令行调用 shell 文件

8.7.2  实例

r=4,w=2,x=1
若要rwx属性,则4+2+1=7
若要rw-属性,则4+2=6
若要r-x属性,则4+1=5

8.7.3  shell 程序和语句

shell 程序由零至多条 shell 语句构成。

shell 语句以下三大类:

  • 说明性语句:以 # 号开始到行尾的部分,不被解释执行。
  • 功能性语句:任意的 OS 命令、shell 内部命令、自编程序、其它 shell 程序名等。
  • 结构性语句:条件测试语句、多路分支语句、循环语句、循环控制语句等。             

8.8  说明性语句和功能性语句

8.8.1  说明性语句(注释行)

注释行可以出现在程序中的任何位置,既可以单独占用一行,也可以接在执行语句的后面。以 # 号开始到所在行的行尾部分,都不被解释执行。例如:

#! /bin/sh 告诉OS用哪种shell来解释执行程序
#
# 本程序说明
#
cmd1
cmd2    # cmd2的语句说明

8.8.2  常用的功能性语句

1、read 命令

read 从标准输入读入一行,并赋值给后面的变量。注意:执行 read 语句时,shell 程序将会等待你的一个标准输入,而一旦回车就代表输入结束,因此必须在一行中输入完毕。

把读入的数据全部赋给 var,语法格式如下:

read var

把读入行中的第一个参数赋给 var1,第二个参数赋给 var2,……,语法格式如下

read var1 var2 var3

DJ8-4 shell 语句的分类、shell 的结构性语句

如果执行 read 语句时标准输入无数据,则程序在此停留等待,直到数据的到来或被终止运行:

DJ8-4 shell 语句的分类、shell 的结构性语句

当变量个数和参数个数不匹配时,将会把剩下的所有参数赋给最后一个变量:

DJ8-4 shell 语句的分类、shell 的结构性语句

2、expr 命令

算术运算命令 expr 主要用于进行简单的整数运算,包括:加 (+)、减 (-)、乘 (\*)、整除 (/) 和求模 (%) 等操作。例如:

$ expr 12 + 5 \* 3
27

$ expr 3 - 8 / 2
-1

$ expr 25 % 4
1

$ num=9
$ sum=`expr $num \* 6`
$ echo $sum
54

DJ8-4 shell 语句的分类、shell 的结构性语句

没有 expr 就不能进行算术运算:

DJ8-4 shell 语句的分类、shell 的结构性语句

8.9  结构性语句

结构性语句主要根据程序的运行状态、输入数据、变量的取值、控制信号以及运行时间等因素来控制程序的运行流程。主要包括以下几类语句:

  • 条件测试语句(两路分支)
  • 多路分支语句
  • 循环语句
  • 循环控制语句

无任何结构性语句的shell脚本程序是一种特例。

8.9.1  条件语句 if

语法结构:

if 表达式
then 命令表1
else 命令表2
fi     

创建 test.sh 文件:

if [ -f file1 ]
then
    echo "文件file1存在"
else
    echo "文件file1不存在"
fi
  • -f:如果 filename为常规文件,则为真
  • -d:如果 filename为目录,则为真
  • [ ]:和表达式两侧必须要有一个空格

执行 test.sh 文件:

DJ8-4 shell 语句的分类、shell 的结构性语句

初始由于没有为其赋予权限,因此执行失败,于是我们使用 chmod 命令修改其权限。

8.9.2  测试语句 test

test 语句可测试的三种对象:

  • 字符串
  • 整数
  • 文件属性

test 命令测试的条件成立时,命令返回值为真(0),否则返回值为假(非 0)

① 用法一

name="anyujin"
test $name == $1
echo $?

DJ8-4 shell 语句的分类、shell 的结构性语句

② 用法二

if test -f file1
then
    echo "文件file1存在"
else
    echo "文件file1不存在"
fi

通常把 test 简写为 [  ] :

if [ -f file1 ]

即用方括号替代了 test 语句,注意方括号和表达式之间至少要有一个空格。

8.9.3  多路分支语句 case…esac

case 字符串变量 in
    模式1)
        命令表1
        ;;
    模式2)
        命令表2
        ;;
    ...
    *)
        命令表n
        ;;
esac

检查用户输入的文件名:

# 要求输入一个命令行参数
if [ $# -ne 1 ]
then
	echo "One argument must be declared."
	exit
fi

# 检查用户输入的文件
case $1 in
    file1)
        echo "User selects file1."
        ;;
    file2)
        echo "User selects file2."
        ;;
    *)
        echo "You must select either file1 or file2!"
        ;;
esac

执行上述 shell 程序:

DJ8-4 shell 语句的分类、shell 的结构性语句

8.9.4  循环语句 for…do…done

当循环次数已知或确定时,使用 for 循环语句来多次执行一条或一组命令。循环体由语句括号 do 和 done 来限定。格式为:

for 变量名 in 单词表
do
    命令表
done

① 用法一

for num in "1" "3" "5"
do
    echo "$num"
done

DJ8-4 shell 语句的分类、shell 的结构性语句

② 用法二

for num in {1..5}
do
    echo "$num"
done

DJ8-4 shell 语句的分类、shell 的结构性语句

③ 用法三

# 判断并创建目录backup
if  [ ! -d $HOME/backup ]
then
	mkdir $HOME/backup
fi

# 修改工作路径
cd /home/envoutante/桌面

# 用flist存放当前目录的所有文件
flist=`ls`

# “图片18.png”
num=18

# 循环flist中的所有文件
for file in $flist
do
    # 修改文件名
    mv ${file} 图片${num}.png
    file="图片${num}.png"

    # 复制文件到backup
    cp $file $HOME/backup
    echo "$file copied"

    # 计数器加一
    num=`expr $num + 1`
done

echo '***Back up completed***'

DJ8-4 shell 语句的分类、shell 的结构性语句

8.9.5  循环语句 while…do…done

语法结构为:

while 命令或表达式
do
    命令表
done

创建文件程序,参数 1 为文件名开头,参数 2 为创建个数:

DJ8-4 shell 语句的分类、shell 的结构性语句

8.9.6  循环控制语句 break 和 continue

break 语句从包含该语句的最近一层循环中跳出一层,break  n 则跳出 n 层;

continue 语句则马上转到最近一层循环语句的下一轮循环上,continue n 则转到最近 n 层循环语句的下一轮循环上。文章来源地址https://www.toymoban.com/news/detail-492818.html

到了这里,关于DJ8-4 shell 语句的分类、shell 的结构性语句的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java面试题】设计模式之七种结构性模式——代理模式、适配器模式、桥接模式、装饰模式、外观模式、享元模式、组合模式

    目录 一、代理模式 二、适配器模式 三、桥接模式 四、装饰模式 五、外观模式 六、享元模式 七、组合模式 概念: 代理模式是为其他对象提供一种以代理控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对

    2023年04月09日
    浏览(50)
  • DJ8-2 主存储器的组织

    目录 一、主存容量的扩展 1. 位扩展 2. 字扩展(编址空间扩展) 3. 字和位同时扩展 - 第一题 - 第二题 - 第三题 - 第四题 二、数据校验 —— 奇偶校验 1. 奇校验 2. 偶校验 如何使用存储芯片组成一个存储器? 确定设计容量:多大设计容量 芯片的选用:多大容量,位数,多少片

    2024年02月12日
    浏览(44)
  • 【Linux | Shell】结构化命令 - if 语句

    前面文章介绍了一些Shell脚本的基础知识,也了解了怎样构建一个shell脚本文件,让shell脚本执行一些基础的指令,但都是从上到下依次执行的。在实际shell编程中,会遇到很多情况需要判断条件,按不同条件去执行不同的命令。本文注意介绍shell编程中的一些结构化命令条件语

    2024年02月16日
    浏览(40)
  • Linux:概述 、安装 、文件与目录结构 、vim编辑器 、网络配置 、远程登录 、系统管理 、基础命令 、软件包管理 、克隆虚拟机 、shell编程

    2.1.1、Linux是什么? Linux是一个操作系统(OS) 所谓的操作系统就是直接用来操作计算机底层硬件的软件。 2.1.2、Linux的出现 官网: https://www.centos.org/ 进入官网进行下载 有很多的镜像,以阿里云的为例: 3.3.1、下载 官网: https://www.vmware.com/ 这是下载的企业版,30天试用期,可

    2024年02月05日
    浏览(61)
  • shell脚本之循环语句

    将某代码段重复运行多次,通常有进入循环的条件和退出循环的条件 一般知道循环次数使用for循环 不知道循环次数,知道停止条件时一般使用while break跳出单个循环后面加数字2则代表跳出两层循环 continue终止某次循环中的命令,但是不会完全终止命令

    2024年02月12日
    浏览(40)
  • 【Shell编程之条件语句】

    测试表达式是否成立,若成立返回0,否则返回其他数值 2.1、常用的测试操作符 命令 解释 -d 测试是否为目录(Directory) -e 测试目录或文件是否存在(Exist) -f 测试是否为文件(File) -r 测试当前用户是否有权限读取 (Read) -w 测试当前用户是否有权限写入 (Write) -x 测试当前用户是否有权

    2023年04月27日
    浏览(32)
  • shell脚本----条件判断语句

    文件测试 test命令 测试表达是是否成立,若成立则返回0,否则返回其他的数 用法一:test 条件表达式 用法二:[ 条件表达式 ] 选项 含义 -e 测试目录或者文件是否存在 -d 测试是否为目录 -f 测试是否为文件 -r 测试当前用户是否有读的权限 -w 测试当前用户是否有写的权限 -x 测

    2024年02月01日
    浏览(43)
  • Shell编程之条件语句

    在简单的Shell脚本程序中,各语句将 按先后顺序依次执行 ,从而实现批处理的自动化过程。然而,单一的顺序结构使得脚本过于机械化,不够智能,难以处理更加灵活的系统任务。 本章主要讲了 条件测试,包括文件测试、整数值比较、字符串比较和逻辑测试 。以及如何使用

    2024年02月01日
    浏览(41)
  • 【shell脚本】条件语句

    测试表达试是否成立,若成立返回0,否则返回其它数值 符号 作用 -d 测试是否为目录 -e 测试是否为目录或文件 -f 测试是否为文件 -r 测试当前用户是否有读取权限 -w 测试当前用户是否有写入权限 -x 测试当前用户是否有执行权限 1.1.2整数比较常用的操作符 英文符号 算数符号

    2024年02月02日
    浏览(44)
  • 3.7 Linux shell脚本编程(分支语句、循环语句)

    目录 分支语句(对标C语言中的if) 多路分支语句(对标C语言中的swich case) 分支语句(对标C语言中的if) 语法结构:          if    表达式                  then  命令表          fi     如果表达式为真, 则执行命令表中的命令; 否则退出if语句, 即执行fi后面的语句。

    2024年02月02日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包