Shell编程<1>---控制语句

最近在看 Linux 程序设计,准备写成一个系列。把每天学到的记录下来。 以实际的例子为主。

一、条件语句

if 语句

语法

#用法 1 

if condition1

then

  statement

elif condition2

then

  statement

fi

#用法 2 

if condition1; then

  statement

elif condition2; then

  statement

else

  statement

fi

例子

  • case1:

    #!/bin/sh 
    
    echo "Is it moring? Please answer yes or no"
    
    read timeofday
    
    if [ "$timeofday" = "yes" ]; then
    
      echo "Good morning"
    
    elif [ "$timeofday" = "no" ]; then
    
      echo "Good afternoon"
    
    else
    
      echo "sorry, $timeofday not recognized. Enter yes or no"
    
      exit 1
    
    fi
    
    exit 0
    

case 语句

  • case1:

    echo "Is it morning? Please input yes or no?"
    
    read timeofday
    
    case $timeofday in
    
      yes) echo "Good morning";; #双分号 
    
      no) echo "Good afternoon";;
    
      y) echo "Good morning";;
    
      n) echo "Good afternoon";;
    
      *) echo "Sorry, answer not recognized";;
    
    esac
    
  • case2: 合并匹配模式
    echo "Is it morning? Please input yes or no?"
    
    read timeofday
    
    case $timeofday in
    
      yes | y | Yes | YES) echo "Good morning";; #双分号 
    
      n* | N*) echo "Good afternoon";;
    
      *) echo "Sorry, answer not recognized";;
    
    esac
    
  • case3: 多条语句
    read timeofday
    
    case $timeofday in
    
    yes | y | Yes | YES)
    
    echo "Good morning"
    
    echo "Up bright and early in the morning"
    
    ;; #双分号 
    
    [nN]*)
    
    echo "Good afternoon"
    
    ;;
    
    *)
    
    echo "Sorry, answer not recognized"
    
    exit 1
    
    ;;
    
    esac
    
    exit 0
    

二、循环语句

for 语句

  • case1: 固定字符串的for循环

    for file in bar fud 43; do
    
      echo $file
    
    done
    
  • case2: 使用通配符的for循环
    for file in $(ls f*.sh); do
    
      echo $file
    
    done
    

    输出:

    bar
    
    fud
    
    43
    
  • case3: 以 test1.txt test2.txt ...运行 a.out
    for ((i=0; i<200; i++)); do #必须有两个括号 
    
     ./a.out < test$i.txt
    
    done
    

    +case4: 将当前目录下的所有的.txt改名为 .gif

    for file in *.gif
    
    do
    
    mv $file  ${file%%gif}txt  //${file%%gif}表示从尾部开始删除与gif匹配的最长部分
    
    done
    

while 语句

  • case1: 密码输入程序

    echo "Enter Password"
    
    read trythis
    
    while [ "$trythis" != "secret" ]; do
    
      echo "Sorry, try again"
    
      read trythis
    
    done
    
    echo "Congrats, password correct"
    

until 语句

与while 相反,当条件不满足时一直运行,直到条件为真

  • case1:

    read trythis
    
    until [ $trythis = "secret" ]; do
    
      echo "Sorry, try again"
    
      read trythis
    
    done
    

二、其他

And 和 Or

statement && statement

statement || statement

语句块

statement && {

  statement1

  statement2

  statement3

  ...

}
时间: 2024-11-03 03:42:22

Shell编程<1>---控制语句的相关文章

Linux Shell编程入门

从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作.在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用.深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一. Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh).Bourne

Linux(五)shell编程基础

一.Linux shell简介 1.shell概述 Shell 是用户与内核进行交互操作的一种接口,目前最流行的 Shell 称为 bash Shell          Shell 是一门编程语言<解释型的编程语言>,即 shell 脚本<就是在用 linux 的 shell 命令编程>,          Shell 是一种脚本语言,那么,就必须有解释器来执行这些脚本.          Unix/Linux 上常见的 Shell 脚本解释器有 bash.sh.csh.ksh

Linux运维 第二阶段 (九)shell编程

Linux运维 第二阶段 (九)shell编程 一.1.基础正则表达式: *         前一个字符匹配0次或任意多次 .         匹配除了换行符外任意一个字符 ^         匹配行首,例:^Hello,匹配以Hello开头的行 $         匹配行尾,例:Hello$匹配以Hello结尾的行 []        中括号中指定的一个字符,例:[0-9].[a-z] [^]       匹配中括号字符以外的任意一个字符,例:[^0-9].[^a-z] \         转

shell编程01—shell基础

01.学习shell编程需要的知识储备 1.vi.vim编辑器的命令,vimrc设置 2.命令基础,100多个命令 3.基础.高端的网络服务,nfs,rsync,inotify,lanmp,sersync,sshkey批量分发管理 02.shell脚本概念 1.什么是shell shell是一个命令解释器,在操作系统的最外层,负责直接与用户对话,将用户的输入解释给操作系统,并输出操作系统各种各样的处理结果,输出到屏幕返回给用户.这种对话方式可与是交互式的(键盘输入命令,可以立即得到shell的回

Linux学习笔记——Shell编程(九)

+++++++++++++++++++++++++ +++++Shell编程+++++++++++++++++++++++++++++++ 1. 基础正则表达式 正则表达式与通配符: 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配,grep awk sed等命令可以支持正则表达式:通配符是用来匹配符合条件的文件名,通配符是完全匹配,ls find cp这些命令不支持正则表达式,所以只能用shell自己的通配符来匹配. 基础正则表达式: 2. 字符截取命令 字段提取命令:cut [选项

linux运维、架构之路-shell编程入门

一.shell编程入门必备基础 1.vim编辑器的命令,vimrc设置 2.150个linux基础命令 3.linux中基础的系统服务crond,ssh网络服务,nfs,rsync,inotify,lnmp,sersync,nmap等 二.变量分类 1.全局变量 [[email protected] ~]# env HOSTNAME=nfs-server TERM=linux SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=172.19.5.146 49184

精讲shell基础以及如何高效的学习shell编程

1.前言 1.1 为什么学习shell编程 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具,Linux/UNIX系统的底层及基础应用软件的核心大部分涉及Shell脚本的内容.每一个合格的Linux系统管理员或运维工程师,都需要熟练的编写Shell脚本语言,并能够阅读系统及各类软件附带的Shell脚本内容.只有这样才能提升运维人员的工作效率,适应日益复杂的工作环境,减少不必要的重复工作,从而为个人的职场发展奠定较好的基础 1.2 学好Shell编程所需的基础知识

Linux Shell常用技巧(十二) Shell编程

Linux Shell常用技巧(十二) Shell编程 二十三. Bash Shell编程:  1.  读取用户变量:    read命令是用于从终端或者文件中读取输入的内建命令,read命令读取整行输入,每行末尾的换行符不被读入.在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY.下面的列表给出了read命令的常用方式: 命令格式 描述 read answer 从标准输入读取输入并赋值给变量answer. read first last 从标准输入读取输入到第

转inux Shell编程入门

http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.html 从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作.在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用.深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一.