shell编程(二)
case判断
前面了解了shell编程的if判断,其实除了if判断,还有case判断。
case语法:
case VAR in
case1) command1 ;;
case2) command2 ;;
case3) command3 ;;
...
*) command ;;
esac

循环
除了判断,大家知道循环也是程序中很重要的一环,那么shell里面的循环是什么样的呢?
带列表的for循环
和python中类似,此类for循环语法结构为
for var in list:
do
command
done
list可以是一串字符,程序会按照空格分隔成多个单词的列表
如

list也可以是1,2,3,4,5这样的数字

也可以是某个命令执行后的结果:

类C语言的for循环
语法:
for ((expression1;condition;expression2))
do
command
done
这种情况和C语言的for循环类似,只是有两个小括号。例如

好,说到这里,我们又可以做一个经典的问题了:打印出9X9乘法口诀表

其中echo -e 表示开启转义 \c 表示不换行 \n 表示换行。

上面这幅图应该让大家知道有什么作用了。
我们看打印的乘法口诀,发现有点没有对齐,这对强迫症来说,可能无法忍受,怎么办呢?其实在shell中,我们除了echo可以打印之外,还可以用printf 这种C语言的打印方法

大家发现没有 printf默认没有换行,这就很不爽了。我们可以在打印末尾加上\n

和其他语言一样,我们可以在%s这里设置字符串的宽度、左右对齐方式等

前面负号表示左对齐,8表示一个占多少格,后面的.4表示要展示多少位,小数点也算一位
好,现在我们再改良一下我们的乘法口诀

while循环
基本用法:
while expression
do
command
done

另外,while循环还可以用来读取文件

awk指令的作用后面会说。
上面的while循环这样写也是OK的

< 表示重定向输入,就是把test.sh当作前面指令的输入。
select循环
select循环是一种菜单扩展循环,语法和带列表的for类似,常和case一起连用
语法规则:
select menu in list
do
command
done

其中 &&表示接着执行后面的语句 exit 1表示退出脚本,如果是break,就是退出循环,continue指跳过本轮循环,继续执行。
函数
Shell中的相比于Python的函数,要简单很多,同时功能也就简单很多
函数定义语法
#funciton为关键字,可以省略
function FUNCTION_NAME(){
command1 #函数体中可以有多个语句,不允许函数内部为空
command2
……
}


Shell中的向函数传递参数是通过位置参数来实现的


函数的作用就是减少重复代码,因此我们需要建立自己的函数库

新建一个Shell脚本,专门用来存放自定义的函数,一般作为函数库里面的函数以下划线开头,以便区分

通过source 或者 . 都可以导入函数库

重定向
之前我们都用echo来输出,但是如果我们想把输出内容保存到文件中该怎么做呢?
>
标准输出覆盖重定向:将命令的输出,重定向输出到其他的文件当中
>>
标准输出追加重定向:将命令的输出,重定向追加到其他文件末尾
<
标准输入重定向:命令将从指定的文件中读取输入而不是键盘输入
| 命令 | 说明 |
|---|---|
| command > file | 将输出重定向到 file。 |
| command < file | 将输入重定向到 file。 |
| command >> file | 将输出以追加的方式重定向到 file。 |
| n > file | 将文件描述符为 n 的文件重定向到 file。 |
| n >> file | 将文件描述符为 n 的文件以追加的方式重定向到 file。 |
| n >& m | 将输出文件 m 和 n 合并。 |
| n <& m | 将输入文件 m 和 n 合并。 |
| << tag | 将开始标记 tag 和结束标记 tag 之间的内容作为输入。 |
需要注意的是文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。
shell编程(二)的更多相关文章
- linux运维、架构之路-shell编程(二)
一.流程控制语句 1.if语句 ①if单分支:一个条件一个结果 1 2 3 4 if 条件 then 命令 fi ②if双分支:一个条件两个结果 1 2 3 4 5 6 if 条件 ...
- Shell编程(二)——shell的基础知识及常用命令
shell的基础知识 一.bash有以下特点: 1.记录命令历史 2.指令和文件名补全 3.别名 alias rm='rm -i' 4.通配符 * 0个或多个字符 ?匹配一个字符 5 输入输出重定向 ...
- Linux上天之路(十七)之Shell编程二
一.shell常用工具 grep 1.作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Exp ...
- Linux Shell编程二
以"``"符号包含的内容不是字符串,而是代表这是一个shell命令. echo "today is" `date` 前面是字符,后面`date`表示执行date ...
- Shell编程二
告警系统需求分析 1.(虽然之前我们学习了zabbix,但有时候也不能满足我们的需求,比如比较冷门的监控项目需要写自定义脚本,或者服务器网络有问题,没有办法将客户端的数据发送到服务端.) 程序架构: ...
- shell编程(二)之算术运算
bash中的算术运算 +.-./.%.* 实现算术运算 1. let var=算术表达式 2. var=$[算术表达式] 3. var=$((算术表达式)) 4. var=$(expr arg1 ar ...
- 【shell】shell编程(一)-入门
如今,不会Linux的程序员都不意思说自己是程序员,而不会shell编程就不能说自己会Linux.说起来似乎shell编程很屌啊,然而不用担心,其实shell编程真的很简单.背景 什么是shell编程 ...
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
- (C#)Windows Shell 编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令
原文(C#)Windows Shell 编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令 (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:( ...
随机推荐
- Java使用Commons-FileUpload组件实现文件上传最佳方案
学习的目标 使用commons-fileupload实现文件上传 使用commons-fileupload封装文件上传工具类 什么是commons-fileupload? The CommonsF ...
- 160302、细聊分布式ID生成方法
一.需求缘起 几乎所有的业务系统,都有生成一个记录标识的需求,例如: (1)消息标识:message-id (2)订单标识:order-id (3)帖子标识:tiezi-id 这个记录标识往往就是数据 ...
- HDU 5667 Sequence(矩阵快速幂)
Problem Description Holion August will eat every thing he has found. Now there are many foods,but he ...
- Code Forces 21 A(模拟)
A. Jabber ID time limit per test 0.5 second memory limit per test 256 megabytes input standard input ...
- Ubuntu下载及安装
Ubuntu(友帮拓.优般图.乌班图)是一个以桌面应用为主的开源GNU/Linux操作系统,Ubuntu 是基于DebianGNU/Linux,支持x86.amd64(即x64)和ppc架构,由全球化 ...
- 不得不知的Excel技巧
1.超链接 选中一个格右击选择超链接. 2.求和 选择一个格点击开始中的求和按钮并拖动求和区域. 3.冻结 冻结一行,选择一行区域,选择开始菜单中的冻结窗格. 冻结上面的行和左边的行,选择夹角的格并点 ...
- django允许外部访问
默认方法启动django python manage.py runserver 这时启动的服务只能在本机访问,这是因为服务只向本机(127.0.0.1:8000)提供,所以局域网的其他机器不能访问. ...
- LInux进程虚拟地址空间的管理
2017-04-07 脱离物理内存的管理,今天咱们来聊聊进程虚拟内存的管理.因为进程直接分配和使用的都是虚拟内存,而物理内存则是有系统“按需”分配给进程,在进程看来,只知道虚拟内存的存在! 前言: 关 ...
- Java设计模式-抽象工厂模式(Abstarct Factory)
抽象工厂模式 举个生活中常见的例子,组装电脑,在组装电脑时,通常需要选择一系列的配件,比如CPU,硬盘,内存,主板,电源,机箱等,为了讨论使用简单,值考虑选择CPU和主板的问题. 事实上,在选择CPU ...
- How to store scaling parameters for later use
you can use sklearn's built-in tool: from sklearn.externals import joblib scaler_filename = "sc ...