`

shell4

 
阅读更多
上一篇Linux shell脚本基础学习中我们讲了Linux shell脚本中控制流程的if 、select、case ,这里接着介绍Linux shell脚本控制流程的loop和引号,控制流程这部分内容比较多,还有一部分内容是关于here document的。

4.loop

loop表达式:

while ...; do

....

done

while-loop 将运行直到表达式测试为真。will run while the expression that we test for is true.

关键字"break" 用来跳出循环。而关键字”continue”用来不执行余下的部分而直接跳到下一个循环。

for-loop表达式查看一个字符串列表 (字符串用空格分隔) 然后将其赋给一个变量:

for var in ....; do

....

done

在下面的例子中,将分别打印ABC到屏幕上:

#!/bin/sh

for var in A B C ; do

echo "var is $var"

done

下面是一个更为有用的脚本showrpm,其功能是打印一些RPM包的统计信息:

#!/bin/sh

# list a content summary of a number of RPM packages

# USAGE: showrpm rpmfile1 rpmfile2 ...

# EXAMPLE: showrpm /cdrom/RedHat/RPMS/*.rpm

for rpmpackage in $*; do

if [ -r "$rpmpackage" ];then

echo "=============== $rpmpackage =============="

rpm -qi -p $rpmpackage

else

echo "ERROR: cannot read file $rpmpackage"

fi

done

这里出现了第二个特殊的变量$*,该变量包含了所有输入的命令行参数值。

如果您运行showrpm openssh.rpm w3m.rpm webgrep.rpm

此时 $* 包含了 3 个字符串,即openssh.rpm, w3m.rpm and webgrep.rpm.

5. 引号

在向程序传递任何参数之前,程序会扩展通配符和变量。这里所谓扩展的意思是程序会把通配符(比如*)替换成合适的文件名,它变量替换成变量值。为了防 止程序作这种替换,您可以使用引号:让我们来看一个例子,假设在当前目录下有一些文件,两个jpg文件, mail.jpg 和tux.jpg。

1.2 编译SHELL脚本

#ch#!/bin/sh mod +x filename

cho *.jpg ∪缓螅梢酝ü淙耄?./filename 来执行您的脚本。

这将打印出"mail.jpg tux.jpg"的结果。

引号 (单引号和双引号) 将防止这种通配符扩展:

#!/bin/sh

echo "*.jpg"

echo '*.jpg'

这将打印"*.jpg" 两次。

单引号更严格一些。它可以防止任何变量扩展。双引号可以防止通配符扩展但允许变量扩展。

#!/bin/sh

echo $SHELL

echo "$SHELL"

echo '$SHELL'

运行结果为:

/bin/bash

/bin/bash

$SHELL

最后,还有一种防止这种扩展的方法,那就是使用转义字符——反斜杆:

echo *.jpg

echo $SHELL

这将输出:

*.jpg

$SHELL

Linux shell脚本基础这里就到这里,控制流程还有一点here document的内容下次再分析。



分享到:
评论

相关推荐

    shell4安全终端模拟软件

    linux控制台工具,上传下载等操作都非常简单,用着不错

    android执行shell命令

    3. **使用第三方库**:有一些开源库,如`shell4android`或`BusyBox`,它们提供了更方便的API来执行shell命令,无需直接调用系统API。 4. **Android Terminal Emulator**:对于普通用户,可以在设备上安装终端模拟器...

    B shell与 C shell的区别

    4. shell编程语言:B shell的shell编程语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构,而C shell的shell编程语言较为简单。 5. 可移植性:B shell可以在所有的UNIX系统上运行,...

    msn shell4.22827

    MSN的插件软件,有隐身、加密、群组、动画功能

    JDK13-java-shell-user-guide.pdf

    4.错误检查:Java Shell提供了实时的错误检查功能,开发者可以实时地检查代码中的错误。 5.多语言支持:Java Shell支持多种语言,包括Java、Groovy、Python、Ruby等。 Java Shell的使用场景包括: 1.快速原型设计...

    Shell源码(Shell源码)

    Shell是Unix和Linux操作系统中的命令解释器,它提供了一个用户与操作系统内核交互的界面,允许用户通过输入命令来执行系统功能。Shell不仅是一个命令行接口,还是一个强大的编程语言,用户可以编写脚本来自动化一...

    LinuxShell脚本学习基础视频

    资源名称:Linux Shell脚本学习基础视频资源目录:【】11a00d99b60c4e2eba3440b8aa3a6bdd【】linux_shell脚本编程_01认识shell,如何编写shell脚本和执行【】linux_shell脚本编程_02vivim简单的常用操作【】linux_...

    Shell编程中文手册.pdf

    本手册涵盖了 Shell 编程的基础知识,包括 Shell 概述、Shell 解析器、Shell 脚本入门、Shell 中的变量等。 Shell 概述 Shell 是一种命令行接口,允许用户与操作系统进行交互。学习 Shell 编程可以让开发者更好地...

    C语言中文网shell脚本教程

    4. **Shell Here Document** `3.6Shell Here Document(内嵌文档_立即文档).html`将解释Here Document的概念,这是一种方便的输入重定向方式,允许在脚本中直接插入多行文本,常用于创建配置文件或模拟用户输入。 ...

    shell变量与创建子shell详解

    Shell脚本是一种强大的编程工具,它在Unix和Linux操作系统中广泛应用于自动化和任务调度。在Shell脚本中,创建子Shell是一种常见的操作,它可以提供一个隔离的执行环境,使得在其中执行的命令和脚本不会影响到父...

    Windows Shell 编程.pdf

    Windows Shell 编程.pdf 看过一些对windows 外壳的扩展程序,在使用上一般都是直接利用windows的外壳API做一些工作,因为外壳操作需要一些比较专业的知识,因此,大部分编程人员特别是使用集成编程环境的程序人员对...

    linux_shell实例精解

    4. **管道与重定向**:利用管道(|)将一个命令的输出作为另一个命令的输入,重定向(>、<、>>)则可以改变命令的标准输入和输出。 5. **Shell内置命令**:如`cd`改变目录,`echo`打印输出,`export`设置环境变量等...

    Shell脚本中获取进程ID的方法

    提问: 我想要知道运行中脚本子shell的进程id。我该如何在shell脚本中得到PID。 当我在执行shell脚本时,它会启动一个叫子shell的进程。作为主shell的子进程,子shell将shell脚本中的命令作为批处理运行(因此称为...

    shell教程shell脚本编写方

    4. 在不中断前台操作的情况下,可通过后台方式运行其它命令。 5. 可以把系统命令、Shell 命令进行适当的组合,构成一个新命令。 6. 可以执行多种命令,包括 Shell 内部命令,Unix 系统命令,编译好的可执行文件甚至 ...

    SHELL十三问,PDF

    此外,Shell并非固定不变的,用户可以根据个人需求选择不同的Shell类型,常见的Shell包括Bourne Shell (`sh`)、Bourne-Again Shell (`bash`)、C Shell (`csh`)、T C Shell (`tcsh`) 和 Korn Shell (`ksh`)等。...

    shell.efi 启动

    4. **启动计算机**:保存设置并退出,电脑将尝试从U盘启动,并执行shell.efi。一旦shell启动,你就可以输入各种命令来管理硬件、加载操作系统映像或者进行故障排除。 UEFI shell提供了一系列内置命令,例如`fs0:`...

    shell编程入门经典--LINUX与UNIX Shell编程指南 (中文pdf版)

    4. **函数**:如何定义和调用自定义函数,以实现代码复用。 5. **输入/输出重定向**:如何改变命令的标准输入、输出和错误输出,实现文件操作和数据流的控制。 6. **管道和重定向**:利用管道(|)连接命令,实现...

Global site tag (gtag.js) - Google Analytics