1。分支
也就是判断了,先介绍下test(这里牵扯到一个问题,我们写shell时候无论是变量,还是文件名尽量不要和指令名冲突),例如我们想看看当前目录下是否有first.sh这个文件,有就输出haha ,没有就heihei.
[root@liumengli my_shell]# cat shell_example.sh
#!/bin/sh
if [ -f first.sh ]
then
echo 'This file exit!'
else
echo 'do not exit!'
fi
exit 0
[root@liumengli my_shell]#
#!/bin/sh
if test -f first.sh
then
echo 'This file exit!'
else
echo 'do not exit!'
fi
exit 0
这里test有2中写法,一个是[] 另一个是test,我倾向于[],因为看上去比较清楚,注意的是[]里面2边都记得和判断体有空格,不然会出错(shell对空格要求还真是死,麻烦的东西)。上面就囊括了语法了,语法也不多说了,但大家会对判断体有些疑问,-f first.sh啥意思,意思就是是否在当前目录下能找到first.sh文件,如何比较其它的呢,比如比较2个数大小,我怎么知道那些可以做为判断体,那些不行呢,例如:判断 猫是否是狗这个是否可行呢???这个我也记不住,但也不需要记住,大家执行下man test 就很清楚了,不记得就去查。
帮助手册上有的就不列举了, test比较有3大类,字符串比较,算术比较(貌似我到现在还没写过算术shell脚本),与文件有关的测试
刚看了if的控制结构,这里列举下
if condition
then
statement
else
statement
fi
记得换行要清楚,不然会出错,当然可以通过加;号来避免,当这样既不出错,可读性又好的写法还是比;号好用不是。;号的写法像这样
#!/bin/sh
if [ -f first.sh ];then
echo 'This file exit!'
else
echo 'do not exit!'
fi
exit 0
到目前为止,还有个问题,我的分支只有2条路,那我想要第3个岔路呢?那就用到了elif,下面是例子
[root@liumengli my_shell]# cat shell_example.sh
#!/bin/sh
echo "Hello, is it morning? Please answer yes or no?"
read time
if [ $time = "yes" ]; then
echo 'Good morning'
elif [ $time = "no" ]; then
echo 'Good afternoon'
else
echo 'Your answer is not recognized!'
exit 1
fi
exit 0
还有一个重要用法就是
if 命令1
then
命令2
else
命令3
fi
exit 0
如果命令1成功运行(意思就是exit 0)执行命令2,如果命令1执行失败(意思就是exit 1或其他非0的数)就会执行命令命令3
其实
if 命令1 就是等于 命令1 if [ $? -eq 0 ] $?记载的是上一个命令的返回状态。
2循环
for循环,样例
#!/bin/sh
for foo in 'hello world' 'yuna' 'rikku'
do
echo $foo
done
exit 0
foo会一个一个去取in后面的内容,然后把它们显示到屏幕上,我想这个很好理解
#!/bin/sh
for foo in `ls *.sh`
do
echo $foo
done
exit 0
这个我想也不难理解
明显缺陷出来了,对固定次数的循环for就有点麻烦了,比如你想循环打印hello 5次,写成
#!/bin/sh
for foo in 1 2 3 4 5
do
echo hello
done
exit 0
总是比较麻烦的。
while循环
语法是
while condition do
statements
done
很容易理解,给个简单的例子,循环打印hello world 10次
[root@liumengli my_shell]# cat while_shell.sh
#!/bin/sh
i=0
while [ $i -lt 10 ]
do
echo "hello world"
i=$(($i+1))
done
exit 0
until循环,和while 很像,就是条件成立时候退出循环,不成立进入循环体,和WHILE相反
[root@liumengli my_shell]# cat until_shell.sh
#!/bin/sh
read stat
until [ $stat = "hello" ]
do
read stat
done
exit 0
[root@liumengli my_shell]#
分享到:
相关推荐
shell编程-shell编程-分支语句(1) shell编程-shell编程-分支语句(2) shell编程-shell编程-循环语句(1) shell编程-shell编程-循环语句(2) Linux的shell编程(一) Linux的shell编程(二) Linux的...
在IT领域,Linux Shell编程是系统管理员和开发者必备的技能之一。它允许用户通过命令行接口与操作系统进行交互,执行自动化任务,编写脚本,甚至进行复杂的系统管理。本篇文章将深入探讨“Linux Shell编程指南”中...
Linux Shell编程是Linux系统中非常重要的一个环节,它允许用户通过命令行接口编写脚本,自动化执行一系列操作,极大地提高了工作效率。在这个主题中,我们将深入探讨Linux命令行基础以及Shell编程的相关知识。 首先...
**UNIX SHELL编程** 在计算机领域,UNIX操作系统以其强大的命令行接口和脚本编写能力而闻名,其中SHELL是用户与系统交互的核心。SHELL不仅仅是一个命令解释器,它还是一个编程语言,允许用户通过编写脚本来自动化...
在本文中,我们将深入探讨几个中级Shell编程实例,涵盖if判断语句、case分支语句、for循环、while循环以及逻辑运算符的应用。 1. **if判断语句**: 使用`if`关键字可以从屏幕读取参数,如`read`命令。在`if`后面的...
### 操作系统中的Shell编程知识点概述 #### 一、Shell编程基础 **Shell**是一种用于与计算机操作系统交互的命令行接口。它不仅提供了一个用户与操作系统之间的桥梁,还支持脚本语言,允许用户通过编写一系列命令来...
### Shell脚本专家指南Shell编程基础 #### 一、Shell编程概述 Shell是连接用户与操作系统的桥梁,它提供了一种交互式的方式让用户能够通过命令行界面与系统进行交互。Shell脚本则是一种用于自动执行一系列Shell...
Shell编程则是利用Shell的语法特性编写脚本,实现自动化任务处理。这十八个PDF文件详细介绍了Shell编程的各种命令和技巧,对于深入理解和掌握Unix/Linux环境下的自动化工作流程至关重要。 1. **基础概念**: - **...
Shell编程是Linux/Unix系统中的一种命令解释器,它允许用户通过命令行界面与操作系统进行交互,执行各种任务。这份“不错的shell编程资料”显然包含了两份PDF文档,旨在为初学者提供详尽的指导,帮助他们入门并掌握...
3. **流程控制**:包括条件语句(`if...else`)、循环语句(`for`、`while`)和分支结构(`case`)。 4. **变量与参数**:Shell脚本中的变量不需要声明,直接使用即可。`$0`表示脚本本身,`$1`到`$9`表示脚本接收到...
- 控制流结构如循环 (`for`, `while`) 和分支 (`case`) 用于控制脚本的执行流程。 - 掌握这些结构可以使脚本更加灵活和强大。 **知识点23:shell 函数** - shell 函数可以将一系列命令封装起来以便重复使用。 - ...
### Shell编程(Linux系统) #### 为什么进行Shell编程 在Linux系统中,虽然存在各种图形界面工具,但Shell依然是一个非常强大的工具。Shell不仅集合了大量的命令,还是一种优秀的编程语言。借助Shell,用户可以实现...
**SHELL编程讲义** SHELL编程是一种在Unix/Linux系统中广泛使用的脚本语言,它允许用户通过命令行界面执行一系列自动化任务。SHELL不仅是一个交互式解释器,还可以用来编写具有复杂逻辑的脚本程序。这篇讲义将深入...
此外,Shell编程中的控制结构包括条件语句(如`if`、`if-else`)、多分支判断(`case`)和循环(`for`、`while`、`until`)。例如,`for`循环常用于遍历列表,`while`循环则根据条件持续执行,直到条件不再满足。 ...
主要针对shell编程的基础做一个阐述,其中包括基础的变量、常量、字符串、数组等的定义方式,一些比较运算符的详细介绍,分支判断语句、循环语句的基础用法、自定义函数的使用方法。还包括一些代码示例
Shell编程是Linux/Unix系统中的命令解释器,同时也是编写脚本的强大工具,广泛应用于系统运维、自动化任务执行和日常操作中。本课件主要涵盖了Shell的基本语法和常用的Shell命令,旨在帮助用户深入理解和掌握这一...
Shell编程是Linux系统中用于自动化任务和管理系统的核心工具。它是一种解释性的脚本语言,允许用户通过命令行界面执行一系列指令。本文档,即《高级Bash脚本编程指南》,旨在帮助从零基础到有一定经验的程序员深入...
3. **流程控制**:`if`语句进行条件判断,`for`和`while`循环处理迭代任务,`case`用于多分支选择。 4. **管道和重定向**:`|`管道连接命令,将一个命令的输出作为另一个命令的输入,`>`和`用于重定向输出和输入。 ...