shell编程控制结构:expr、let、for、while、until、shift、if、case、break、continue、功能、select
1、expr计算整数变量值
s=`expr 2 + 3`
运算符号和參数之间要有空格分开;
2、let命令
let
s=(2+3)*4
echo
$s
3、for语句
#!/bin/bash
for var in one two three four five
do
echo ------
echo '$var is' $var
done
以命令返回值作为列表
#!/bin/bash
for var in `ls`
do
echo -----
echo $var
done
4、while语句
语法格式:while 表达式do命令行done
#!/bin/bash
num=1
while [ $num -le 10 ]
do
echo -e "\t the num is $num"
let num=num+1
done
5、until语句
语法格式:unitil 表达式do命令行done
#!/bin/bash
sum=0
num=10
until test $num -eq 0
do
sum=`expr $sum + $num`
num=`expr $num - 1`
done
echo "sum = $sum"
shift语句:将变量的值依次向左传递,并形成一组新的參数值–例:位置变量当前值为:1=file1 2= file2 3=file3– 运行一次shift后为:1=file2 2=file3还能够在shift命令中指定位置变量转移的次数–shift n
#!/bin/bash
while [ -n "$*" ]
do
echo $1 $2 $3 $4 $5 $6
shift
done
7、if语句
if 语句的一般形式 :if 条件表达式then #当条件为真时运行下面语句命令列表else #当条件为假时运行下面语句命令列表fi
#!/bin/bash
if test -f "$1"
then
echo "$1 is an ordinary file"
else
echo "$1 is not an ordinary file"
fi
8、case语句
取值后面必须为单词in,每个模式必须以右括号结束。取值能够为变量或常数。
取值检測匹配的每个模式,一旦模式匹配。其间全部命令開始运行直至;;。运行完匹配模式对应命令后不再继续其它模式。假设无一匹配模式,使用*号捕获该值,再接受其它输入。
[注]1.模式字符串中能够使用通配符2.假设一个模式字符串中包括多个模式,那么各模式之间应以竖线(|)隔开,表各模式是“或”的关系,即仅仅要给定字符串与当中一个模式相配,就会运行其后的命令列表。3.各模式字符串应是唯一的,不应反复出现,而且要合理安排它们的出现顺序,比如。不应将“*”作为头一个模式字符串,由于“*”能够与不论什么字符串匹配。若第一个出现,就不会再检查其它模式了。4.case语句以keywordcase开头,以keywordesac结束。5.case的退出(返回)值是整个结构中最后运行的命令的退出值。若没有运行不论什么命令。则退出值为0.
#!/bin/bash
case $1 in
1)
echo " you choice is 1";;
2)
echo " your choice is 2";;
*)
echo " your choice is others";;
esac
9、break与continue
–1、break:用于马上终止当前循环的运行。break命令能够使用户从循环体中退出来。–语法:break[n] ,当中。n表示要跳出几层循环,默认值为1–2、continue:跳过循环体中在其之后的语句,会返回到本循环层的开头,进行下一次循环。–语法:continue[n]。当中,n表示从包括continue语句的最内层循环体向外跳到第几层循环。默认值为1,循环层数是由内向外编号。
10、函数
函数:由函数标题和函数体两部分组成。标题是函数名。
函数体是函数内在的命令集合。标题名称必须唯一。变量均为全局变量,没有局部变量。
#!/bin/bash
num=1
hello()
{
echo "hello boy~ It's our $num meeting"
let num=num+1
}
11、select语句
格式:
select 变量 in 列表do命令行(通经常使用到循环变量)done制作一个选择表,在列表中选择一个选项运行命令行。假设选择的变量不在列表序列中,则返回一个空值。
须要用break退出循环。
#!/bin/bash
echo "a is 5 ,b is 3. Please select your method: "
a=5
b=3
select var in "a+b" "a-b" "a*b" "a/b"
do
break
done
case $var in
"a+b")
echo 'a+b= '`expr $a + $b`;;
"a-b")
echo 'a-b= '`expr $a - $b`;;
"a*b")
echo 'a*b= '`expr $a \* $b`;;
"a/b")
echo 'a/b= '`expr $a / $b`;;
*)
echo "input error"
esac
版权声明:本文博客原创文章,博客,未经同意,不得转载。
shell编程控制结构:expr、let、for、while、until、shift、if、case、break、continue、功能、select的更多相关文章
- Shell编程-控制结构 | 基础篇
if-then-else分支结构 if-then-else是一种基于条件测试结果的流程控制结构.如果测试结果为真,则执行控制结构中相应的命令列表:否则将进行另外一个条件测试或者退出该控制结构. if- ...
- shell编程:expr的数学运算
运算符两种方式 方式一:expr $num1 operator $num2 方式二:$(($num1 operator $num2)) (方式二在运算符“=”时候会出错) 1+2.sh 这个代码有点问 ...
- 速查笔记(Linux Shell编程<下>)
转载自: http://www.cnblogs.com/stephen-liu74/archive/2011/11/04/2228133.html 五.BASH SHELL编程: 1. 初始化顺 ...
- shell编程--基本格式,基本语法,运算符,expr,(()),$[]
02/shell编程 Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash Shell Shell也是一门编程语言."."号执行脚本时,会让脚本在调用者 ...
- shell编程笔记(1)
shell编程: 编译器,解释器 编程语言:机器语言.汇编语言.高级语言 静态语言:编译型语言 强类型(变量) 事先转换成可执行格式 C.C++.JAVA.C# ...
- 【转】Shell编程
原文链接: Shell编程 打算有时间简单了解shell编程 1.shell结构 一个简单的例子: [root@localhost shell]# vi example #!/bin/sh #Thi ...
- Linux Shell编程参考大全
本文记录Linux Shell编程中常用基本知识,方便快速入门以及查询使用. 本文主要分为以下几个部分: 一.Shell中的变量 任何编程语言中,有关变量的定义,作用范围,赋值等都是最最基础的知识. ...
- shell编程企业级实战
如何才能学好Shell编程 为什么要学习shell编程 Shell是Linux底层核心 Linux运维工作常用工具 自动化运维必备基础课程 学好shell编程所需Linux基础 熟练使用vim编辑器 ...
- [No000014A]Linux简介与shell编程
Linux 介绍 内核 库: .so 共享对象,windows:dll 动态链接库 应用程序 Linux的基本原则: 1.由目的单一的小程序组成:组合小程序完成复杂任务: 2.一切皆文件: 3.尽量避 ...
随机推荐
- BZOJ 1052 HAOI2007 覆盖问题 二分法答案+DFS
标题效果:特定n点.涵盖所有的点与同方三面.斧头要求方垂直边界,最小平方的需求方长值 最大值至少.答案是很明显的二分法 但验证是一个问题 考虑仅仅有三个正方形,故用一个最小矩形覆盖这三个正方形时至少有 ...
- 《Java程序猿面试笔试宝典》之Java与C/C++有什么异同
Java与C++都是面向对象语言,都使用了面向对象思想(比如封装.继承.多态等),因为面向对象有很多非常好的特性(继承.组合等),使得二者都有非常好的可重用性. 须要注意的是,二者并不是全然一样,以下 ...
- ios 多线程开发(一)简介
简介 线程是在一个程序中并发的执行代码的方法之一.虽然有一些新的技术(operations, GCD)提供了更先进高效的并发实现,OS X和iOS同时也提供了创建和维护线程的接口. 这里将要介绍线程相 ...
- 一个简单的样例看明确怎样利用window.location.hash实现ajax操作时浏览器的前进/后退功能
我们知道JavaScript中非常早就提供了window.history对象,利用history对象的forward().go().back()方法可以方便实现不同页面之间的前进.后退等这样的导航功能 ...
- form 为什么上传文件enctype现场
FORM要素enctype属性指定表单数据server当提交所使用的编码类型,默认默认值它是"application/x-www-form-urlencoded". 这样的编码方式 ...
- 马云收购UC你,至于到底是谁宣战
近日,阿里巴巴官方正式宣布,UC优视全资融入阿里巴巴集团,并组建阿里UC移动事业群. 据阿里方面表示,整个交易对UC的估值远超百度对91无线的估值,外界推測估值近50美元.是中国互联网最大一笔交易.业 ...
- csdn仍是"待定"对?
正如标题,我的博客会审查,?我们见证.如此反复.考虑到该博客平台的变化. 看来,这次最终逃脱被"待审核",看来再也不用受这个困扰了,希望以后CSDN可以在 ...
- 它们的定义PropertyPlaceHolder无法完成更换任务
Spring默认PropertyPlaceholderConfigurer只能加载properties格风格简介,现在,我们需要能够从类的完整支持允许似hadoop格风格xml配置文件读取配置信息,并 ...
- Google免费的SVN服务器管理VS2010代码
原文:Google免费的SVN服务器管理VS2010代码 前言 Google免费为我们提供了代码管理的SVN服务器.首先我这里用的Win7 64的电脑系统,用VS2010进行的代码开发.这里管理代码需 ...
- 将node-expat扩展编译至node.exe中
1.下载node源代码 https://github.com/joyent/node (v:0.10.25) 2.下载node-expat源代码 https://github.com/node-xmp ...