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 super参数错误
# -*- coding:utf-8 _*-"""@author:Administrator@file: yamlparser.py@time: 2018/09/07&q ...
- 解决系统中大量的TIME_WAIT连接
今天发现网站特别卡!! 查看网络连接数: netstat -an |wc -l netstat -an |grep xx |wc -l 查看某个/特定ip的连接数 netstat -an ...
- JavaScript在div后添加删除div
var idd = 'str'; $('.task-done-detail-content-p7').click(function () { var id = this.id; if(idd !== ...
- iTOP-4418开发板支持Android4.4/5.1.1系统、Linux3.4.39、QT2.2/4.7/5.7、Ubuntu12.04
核心板参数 尺寸:50mm*60mm 高度:核心板连接器组合高度1.5mm PCB层数:6层PCB沉金设计 4418 CPU:ARM Cortex-A9 四核 S5P4418处理器 1.4GHz 68 ...
- HTML基础之JS中的序列化和反序列化-----字符串的json类型与字典之间的相互转换
前端向后端传递数据的时候不能直接传递对象(如,字典),只能发字符串,Jason就是一种字符串所以前端向后端发送数据的时候,需要将对象转换成字符串 如果前端向后端发送的是json类型,需要通过JSON. ...
- mac charles手机抓包详细教程
1.官方下载charles 2.查看电脑IP地址 3.Proxy>Proxy Settings>勾选 Enable transparent HTTP proxying (记住端口号 88 ...
- Angular_上拉刷新
1.先不做上拉触发,用button模拟一下,触发函数 export class StudyComponent implements OnInit { /*列表数据流 */ list$: Observa ...
- quart-process_bar
import asyncio import random import aioredis import redis from quart import Quart, request, url_for, ...
- 使用scrapy爬虫,爬取17k小说网的案例-方法一
无意间看到17小说网里面有一些小说小故事,于是决定用爬虫爬取下来自己看着玩,下图这个页面就是要爬取的来源. a 这个页面一共有125个标题,每个标题里面对应一个内容,如下图所示 下面直接看最核心spi ...
- javascript任务队列
摘自:https://www.cnblogs.com/liangyin/p/9783342.html,谢谢作者分享! 任务队列 所有任务可以分成两种,一种是 同步任务(synchronous),另一种 ...