Shell脚本学习 - 流程控制和函数
继续Shell的学习。上两篇是关于基本数据类型,基本语法以及运算符相关,这一篇是流程控制相关(if, for, while)
流程控制
if else
流程控制不可为空,如果else没有语句执行,就不要写else
if:
if condition
then
command1
command2
...
commandN
fi
if else:
if condition
then
command1
command2
...
conditionN
else
command
fi
if else-if else:
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
if else语句经常和test命令结合使用
num1=$[*]
num2=$[+]
if test $[num1] -eq $[num2]
then
echo '两个数字相等'
else
echo '两个数字不等'
fi
for循环
for循环常用格式
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
还可以写成一行的形式
for var in item1 item2 ... itemN; do command1; command2... done
in列表可以包含替换、字符串和文件名
for loop in 5 # 顺序输出列表中所有数字
do
echo "The value is: $loop"
done
for str in 'This is a string' # 顺序输出字符串中所有字符
do
echo $str
done
while
condition通常为测试条件。格式如下
while condition
do
command
done
let命令:执行一个或多个表达式,变量计算中不需要加$表示变量
#!/bin/bash
int=
while(( $int<=))
do
echo $int
let "int++"
done
读取键盘输入
echo '按下 <CTRL-D> 退出'
echo -n '输入你最喜欢的网站名:'
while read FILM
do
echo "是的!$FILM是一个好网站"
done
无限循环
while:
do
command
done
或者
while true
do
command
done
或者
for (( ; ; ))
until循环
until循环执行一系列命令直至条件为true为止
一般while循环优于until循环
until condition
do
command
done
一个实例
#!/bin/bash a= until [ ! $a -lt ]
do
echo $a
a=`expr $a + `
done
case
多选择语句,匹配一个值一个模式
每个模式名用右括号结束
一旦模式匹配到其中一个,执行完匹配到的模式的所有命令后不再继续执行其他模式
如果没有匹配到任何模式,使用星号*捕获这个值,再执行后面的命令
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
*)
command1
command2
...
commandN
;;
esac # 就是case反过来写
跳出循环
break
continue
跟其他语言的break continue用法相同
Shell脚本学习 - 流程控制和函数的更多相关文章
- shell脚本之流程控制
shell脚本之流程控制 shell脚本之流程控制 条件语句 条件判断 循环语句for,while,until for循环 while循环 until循环 循环控制语句continue 循环控制语 ...
- shell脚本 3 流程控制
shell流程控制 流程控制是改变程序运行顺序的指令.linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case).下面我将通过例子介 ...
- Shell脚本之流程控制(if、for、while)
if 判断 if语句的三种格式: (1)if (2)if else (3)if elif else 语法格式如下: #if 语法格式 if 条件 then 命令1... 命令2... fi #if e ...
- shell脚本(10)-流程控制while
一.while循环介绍 while循环与for一样,一般不知道循环次数使用for,不知道循环的次数时推荐使用while 二.while语法 while [ condition ] #条件为真才会循环, ...
- shell脚本(11)-流程控制case
一.case介绍 生产环境下,遇到要根据不同的状况执行不同的预案的情况,首先根据可能出现的情况写出对应预案,根据出现的情况来加载不同的预案 特点:根据给予的不同的代码块 二.case语法 case 变 ...
- 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!
http://blog.csdn.net/xiaominghimi/article/details/7603003 本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区 ...
- Linux基础-shell脚本知识整理和脚本编写----------变量、运算符、流程控制、函数、计划任务(发送邮件)
I:知识整理:变量.运算符.流程控制.函数.计划任务 变量 系统变量:set:显示所有变量 env:环境变量 常用系统变量: path pwd lang home his ...
- Go语言学习之3 流程控制、函数
主要内容: 1. strings和strconv使用2. Go中的时间和日期类型3. 指针类型4. 流程控制5. 函数详解 1. strings和strconv使用 //strings . strin ...
- linux下shell脚本学习
在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具.Shell不仅仅是命令的收集,而且是一门非常棒的编程语言.您可以通过使用shell使大量的任务自动化,shel ...
随机推荐
- python--再看并行之协程线程进程
1.gevent协程适合I/O密集,不适合CPU密集. 3.gevent协程无法发挥多核优势,事实上,协程只是以单线程的方式在运行. 3.子程序就是协程的一种特例 项目实际应用 from gevent ...
- jq选择器(jq 与 js 互相转换),jq操作css样式 / 文本内容, jq操作类名,jq操作全局属性,jq获取盒子信息,jq获取位置信息
jq选择器(jq 与 js 互相转换) // 获取所有的页面元素jq对象 $('css3选择器语法'); var $box = $(".box:nth-child(1)"); 获取 ...
- java压缩文件或文件夹并导出
java压缩文件或文件夹并导出 tozipUtil: package com.zhl.push.Utils; import java.io.File; import java.io.FileInput ...
- 爬虫框架Scrapy 之(二) --- scrapy文件
框架简介 核心部分: 引擎.下载器.调度器 自定义部分: spider(自己建的爬虫文件).管道(pipelines.py) 目录结构 firstSpider firstSpider spiders ...
- 初始化仓库(git init)
创建新的仓库 首先进入需要初始化的目录,然后输入git init D:\Git\test λ git init Initialized empty Git repository in D:/Git/t ...
- vue keep-alive内置缓存组件
1.当组件在keep-alive被切换时将会执行activeted和deactiveted两个生命周期 2.inlude 正则表达式或字符串 ,只有符合条件的组件会被缓存 exclude正则表达式或字 ...
- python装饰器的wraps作用
不加: from functools import wraps def my_decorator(func): def wper(*args, **kwargs): '''decorator''' p ...
- ssh远程访问失败 Centos7
ssh远程访问失败 Centos7 命令ssh远程访问另外一台主机hadoop.master失败 #ssh hadoop.master 报以下信息 [root@hadoop ~]# ssh hadoo ...
- 将Chrome插件Momentum背景图片设为桌面壁纸
Momentum简介 Momentum插件是一款自动更换壁纸,自带时钟,任务日历和工作清单的chrome浏览器插件.官方的解释就是:替换你 Chrome 浏览器默认的“标签页”.里面的图片全部来自50 ...
- ICMP shell
场景 反向shell的场景下使用 原理 ICMP作为获取反向shell的通道 实践 运行 run.sh报错,可能是因为用的Parrot.改一下就可以了 ifconfig | grep 'inet '| ...