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语句

for 变量 in 列表

do

命令行(通常用到循环变量)

done

#!/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"

6、shift语句

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语句以关键字case开头,以关键字esac结束。

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

时间: 2024-10-20 19:09:22

shell编程控制结构:expr、let、for、while、until、shift、if、case、break、continue、函数、select的相关文章

Shell编程-控制结构 | 基础篇

if-then-else分支结构 if-then-else是一种基于条件测试结果的流程控制结构.如果测试结果为真,则执行控制结构中相应的命令列表:否则将进行另外一个条件测试或者退出该控制结构. if-then-else语法格式: if 条件1 then 命令列表1 elif 条件2 then 命令列表2 else 命令列表3 fi 执行逻辑流程图 说明:当条件1成立时,则执行命令列表1并退出if-then-else控制结构:如果条件2成立,则执行命令列表2并退出if-then-else控制结构:

shell 编程 (三)-for 循环,while循环,break,continue,exit

[toc] 一.for循环 重复执行一系列命令在 编程中很常见.通常你需要重复一组命令直到达到某个特定条件,比如处理某个目录下的所有文件.系统上的所有用户或者是某个文本文件中的所有行. 常见的两种循环,在脚本中普遍被用到. for循环while循环 语法:for 变量名 in 条件; do -; done for var in list do commands done 在list参数中,提供了迭代中要用的一系列值 示例1:用for循环来写个1-100的求和. 思路: [ ] 首先需要把1-10

shell编程详解(一)

shell编程 语言分为: 编译型语言:先要事先转换成可执行格式 解释型语言:边解释边执行 变量:shell是弱类型编程语言,变量不需要先指明类型及初始化,而是由上下文决定类型 bash变量类型: 环境变量 本地变量 位置变量 特俗变量 本地变量:作用域为整个bash进程 VARNAME=value 局部变量:作用域当前代码 local VARNAME=value 环境变量:作用域为当前shell进程及子进程 export VARNAME=value 条件判断 hash中如何实现条件判断? 条件

linux shell编程

1.什么是shell 2. 还是hello world程序 3. shell中的变量 3.1 系统变量 3.2 用户定义变量 3.2.1 用户定义变量规则 3.2.3 shell如何使用变量 3.2.3 全局变量 vs 局部变量 4. shell编程中的控制结构 4.1 条件判定 4.1.1 简单条件判定 4.1.2 组合判定 4.2  if - else 4.3 for 4.4 while 4.5 case 5. shell中的函数 5.1 函数声明和定义 5.2 函数调用 6. shell脚

Linux与Unix shell编程指南(完整高清版).pdf

找到一本很详细的Linux Shell脚本教程,其实里面不光讲了Shell脚本编程,还介绍了系统的各种命令 http://vdisk.weibo.com/s/yVBlEojGMQMpv 本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题.本书内容全面.文字简洁流畅,适合Shell编程人员学习.参考. 目      录 译者序 前言 第一部分   shell 第1章   文件安全与权限 1 1.1   文件 1 1.2   文件

linux学习笔记四(shell编程)

前言:最近在学习shell编程,shell编程是一个很强大的编程语言. 目的:方便今后复习. 内容:1.简单的回顾一下编程语言                 1)编程语言:机器语言,汇编语言,高级语言.                 2)编程语言有静态和动态的区分.                             区别:静态语言是一种编译性的语言,要提前知道变量的格式,进过完整的编译之后才能运行,典型的静态语言包括:C.C++.JAVA.C#.                    

【转】Shell编程

原文链接: Shell编程  打算有时间简单了解shell编程 1.shell结构 一个简单的例子: [[email protected] shell]# vi example #!/bin/sh #This is show what a example looks like. echo "my first shell example." echo # this inserts an empty line in output. echo "We are current in

Linux Bash Shell编程快速入门

BASH 的基本语法 最简单的例子 -- Hello World! 关于输入.输出和错误输出 BASH 中对变量的规定(与 C 语言的异同) BASH 中的基本流程控制语法 函数的使用 2.1     最简单的例子 -- Hello World! 几乎所有的讲解编程的书给读者的第一个例子都是 Hello World 程序,那么我们今天也就从这个例子出发,来逐步了解 BASH. 用 vi 编辑器编辑一个 hello 文件如下: #!/bin/bash# This is a very simple

shell编程笔记(1)

shell编程: 编译器,解释器 编程语言:机器语言.汇编语言.高级语言 静态语言:编译型语言    强类型(变量)    事先转换成可执行格式    C.C++.JAVA.C#            动态语言:解释型语言, on the fly    弱类型    边解释边执行    PHP.SHELL.python.perl 面向过程:Shell, C面向对象: JAVA, Python, perl, C++ 变量:内存空间,命名 内存:编址的存储单元 进程:1+100:1+10000001