if语法 :
 
if [ expression ] 
   then
   commands
elif [ expression2 ]
   then
   commands
else
   commands
fi
 
 
 
case 语法:
 
case string1 in
   str1)
    commands;;
   str2)
    commands;;
   *)
    commans;;
esac
 
 
 
循环语句 for 语法: 
 
for  var in list

do

    commands
  done

 
  在此形式时,对在list中的每一项,for语句都执行一次,list可以使包括几个单词的、由空格隔开的变量,也是可以直接输入的几个值,每执行一次循环,var都被赋予list中的当前值,直到最后一个为止;
 
 
第二种形式:
 
for var
do
  commands;
done 
使用这种形式时,对变量var中的 每一项,for语句都执行一次,此时,外壳程序假定变量 var
中包含外壳程序在命令行的所有位置参数;
 
 
 
 
while 循环语句:
 
while expression
 do 
   commands;
 done
 
 
 
until循环语句:
 
只是条件为假的时候,才会去执行until语句

until expression

do
  commands 
done 
 
 
 
shift 语句:
  shift 命令用来将存储在位置参数中的当前值左移一个位置;
 
  
   $1=-r  $2=file1  $3=file3
 执行shift命令:
   shift
 你会得到:
$1 = file1 $2 = file2 
 
也可以指定每次偏移的位数:
 shift 2     // 意味着每次移动两个位置;
 
 
while [ "$1" ]
d o
if [ "$1" = "-i" ] then
  infile = " $ 2 "
   shift 2
elif  [ "$1" = "-o" ]
   then   
   outfile = " $ 2 "
   shift 2
else
   echo "Program $0 does not recognize option $1"
fi
done
  tr a-z A-Z <$infile >$outfile      // 将小写转化诶大写, 输入的文字是;  // 
 
 
 
 
select  选择语句:
 
 
select menuitem [in list_of_items]
do
   commands;
done
 
当select语句执行时,shell为在list_of_items 中的每一项创建一个标有数字的菜单项;;
list_of_items 可以是包含几个条目的变量, 就像是choose1 choose2,或者直接在命令中输入的选择项;
 
select menuitem in choice1 choice2 choice3
 
如果没有list_of_items ,select语句则使用命令行的位置参数,就像for表达式一样;
 
 
 
 
repeat 语句:  
  
 repeat 语句只存在于tcsh中,在pdksh 和bash中没有相似的语句。 repeat 语句用来使一个单
一的语句执行指定的次数,erpeat语句如下:
   repeat count commands;
下面给出repeat语句的一个例子。它读取命令行后的一串数字。并根据数字在屏幕上分行输出句号.
 

#
foreach num ($*)
   repeat $num echo -n "."
   echo ""
end
任何repeat 语句都可以用while 或 f o r语句重写。  repeat语句只是更加方便而已。

 
 
 
子函数: 
  外壳函数可以定义自己的函数,就像C或是其他语言一样,使用函数的最大好处
就是使得程序更为清晰,可读, 
fname(){
   shell commands;
}
 
 
使用函数的时候:
fname  per1 per2 per3 
 

Shell 语法 if 、 case 、for 、 while、 until 、select 、repeat、子函数的更多相关文章

  1. shell编程——流控制case和select

    在shell编程里有时候需要出现交换界面,让使用者来选择要执行的功能,如下面所示,这时候就需要用到case和select进行配合 请选择功能: 1) 退出 2) 系统升级 3) 防火墙配置 4) to ...

  2. Linux Shell系列教程之(十三)Shell分支语句case … esac教程

    本文是Linux Shell系列教程的第(十三)篇,更多Linux Shell教程请看:Linux Shell系列教程 分支语句非常实用,基本上高级语言都支持分支语句(python 没有),大多数都使 ...

  3. shell语法基础

    一.变量 1.linux大小写敏感,变量取名要注意大小写.可以通过变量名前面加$来访问变量的内容.可以通过使用read命令来将用户输入的值赋给一个变量. 2.给变量赋值时,如果字符串中包含空格,就必须 ...

  4. mysql语法之case when then与列转行

    mysql语法中case when then与列转行的使用场景非常丰富. case语句类似java中条件分支语句的作用,可以类比java中的switch语句或者if语句来学习. 其语法如下: case ...

  5. shell语法使用

    这两天初次接触shell编程,所谓shell编程其实就是用一定的语法将各种基本的命令组合起来,让shell程序去解释执行.如果对windows的dos有了解,可以这样理解,其实shell脚本文件和.b ...

  6. shell语法(二)

    Shell脚本语法 条件测试:test. [ ] 命令test或[可以测试一个条件是否成立,如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为1 ...

  7. shell脚本中case的用法

    shell脚本中case选择语句可以结合read指令实现比较好的交互应答操作,case接收到read指令传入的一个或多个参数,然后case根据参数做选择操作. case的语法如下 case $char ...

  8. Shell语法规范

    ver:1.0 博客:https://www.cnblogs.com/Rohn 本文介绍了Shell编程的一些语法规范,主要参考依据为谷歌的Shell语法风格. 目录 背景 使用哪一种Shell 什么 ...

  9. 转:bash shell 语法1

    1 Shell介绍 Shell的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive),Shell还有一种执行命令的方式称为批处理(Batc ...

随机推荐

  1. Effective Objective-C 2.0 — 第10条:在既有类中使用关联对象存放自定义数据

    可以通过“关联对象”机制来把两个对象连起来 定义关联对象时可指定内存管理语义,用以模仿定义属性时所采用的“拥有关系”与“非拥有关系” 只有在其他做法不可行时才应选用关联对象,因为这种做法通常会引入难于 ...

  2. .net3.5后新增的 BeginInvoke EndInvoke 异步操作

    protected void Main() { //首先定义一个方法的封装..后边的LongTimeMethod是被封装的方法.. Func<int> longTimeAction = n ...

  3. java中如何将字符串数组转换成字符串(转)

    如果是 “字符串数组” 转 “字符串”,只能通过循环,没有其它方法 String[] str = {"abc", "bcd", "def"} ...

  4. Java7的异常处理新特性-addSuppressed()方法等

    开发人员对异常处理的try-catch-finally语句块都比较熟悉.如果在try语句块中抛出了异常,在控制权转移到调用栈上一层代码之前,finally语句块中的语句也会执行.但是finally语句 ...

  5. Objective-C 链式语法的实现

    对于 Objective-C 的语法,喜欢的人会觉得它是如此的优雅,代码可读性强,接近自然语言,开发者在调用大多数方法时不需要去查看注释或文档,通常只凭借方法名就可以大致知道这个方法的作用,可以理解为 ...

  6. AngularJS启动过程分析

    1111 app.controller('myCtrl',['$scope',function($scope){     $scope.wcrq=1234567890; }]); angular.bo ...

  7. golang笔记——命令

    1.GO命令一览 GO提供了很多命令,包括打包.格式化代码.文档生成.下载第三方包等等诸多功能,我们可以通过在控制台下执行 go 来查看内置的所有命令 下面来逐个介绍,也可以详细参考 https:// ...

  8. [设计模式] javascript 之 桥接模式

    桥接模式说明 定义:分离抽象化与实现化,使之可以自由独立的变化: 说明:由于软件环境需求原因,使得类型抽象具有多种实现以自身变化定义等情况,这使得我们要分离抽象实现与具体实现,使得抽象化与实现化解耦, ...

  9. 避免重定向301&302 (Avoid Redirects)

    这个也是Best Practices for Speeding Up Your Web Site的第12条原则: 重定向的意思是,用户的原始请求(例如请求A)被重定向到其他的请求(例如请求B).这是H ...

  10. Python中MySQLdb的事务处理

    今天写了个tool,目的是把csv中的数据插入到数据库中去.其中有一部分,是需要分别向两张表中插入两条数据,如果第二张表中的数据已经存在,那么第一张表中的数据也不需要插入. 然后通过百度查找发现,其实 ...