内容:

一.if-then命令

二.if-then-else命令

三.test命令

四.case命令

1.if-then结构化命令中最基本的类型,其格式如下:

 if command
then
commands
fi

这里需要注意的是在其他语言中if 语句之后的对象是一个等式来测试是TRUE还是FALSE值,而在bash shell中if 语句会运行if 行定义那个命令。如果该命令退出码是数字0,则表示该命令运行成功,位于then 后面的命令就会运行。如果退出码是其他值,那么then后面的命令就不会执行。

 oracle@suse:~> cat test
#!/bin/bash
#test if-then
if ls
then
echo "ls worked"
fi

将第4行ls命令换成bash shell不识别的命令,比如sdjflsdjfl,执行脚本会报错.

 oracle@suse:~> cat test
#!/bin/bash
#test if-then
if sdjflsdjfl
then
echo "ls worked"
fi
oracle@suse:~> ./test
./test: line : sdjflsdjfl: command not found

2.if-then-else,格式如下:

 if command
then
commands
else
commands
fi

当if语句中的命令退出码是0时,then部分命令会执行,否则就会执行else部分命令。

2.1嵌套if,当脚本代码中有多个判断条件时,可以用elif 代替else部分,格式如下:

 if command1
then
commands
elif command2
then
commands
fi
 oracle@suse:~> cat test1
#!/bin/bash
if jjj
then
echo "1 worked"
elif lllls
then
echo "2 worked"
elif date
then
echo "3 worked"
fi
oracle@suse:~> ./test1
./test1: line : jjj: command not found
./test1: line : lllls: command not found
Thu Apr :: CST
worked

3.如果test命令中列出的条件成立,test命令就会退出并返回退出码0,如果条件不成立test命令就会退出并返回退出码1。test 命令,格式:

 test condition

与if-then配合使用

 if test condition
then
commands
fi

bash shell另一种声明test方法,用方括号[],需要注意[]与condition之间有空格,就是必须在左括号右侧和右括号左侧各加一个空格,否则会报错。

if [ condition ]
then
commands
fi

3.1使用test进行数值比较

n1 -eq n2              检查n1是否等于n2

n1 -gt n2              检查n1是否大于n2

n1 -ge n2              检查n1是否大于等于n2

n1 -lt n2     检查n1是否小于n2

n1 -le   n2             检查n1是否小于等于n2

n1 -ne  n2             检查n1是否不等于n2

 oracle@suse:~> cat test2.sh
#!/bin/bash
#using numeric test comparisons
var1=
var2= if [ $var1 -gt ]
then
echo "the value $var1 is greater than 88"
fi if [ $var1 -gt $var2 ]
then
echo $var1 ">" $var2
else
echo $var1"<="$var2
fi oracle@suse:~> ./test2.sh
the value is greater than
>

3.2 使用test进行字符串比较

str1 = str2 检查str1是否和str2相同

str1 > str2 检查str1是否比str2大

str1 < str2 检查str1是否比str2小

str1 != str2 检查str1是否和str2不同

-n str1    检查str1长度是否非零

-z str1        检查str1长度是否为零

 oracle@suse:~> cat test3.sh
#!/bin/bash
#testing string str1=hello
str2=word if [ -z $str ]
then
str=$str2
echo $str
fi if [ $str1 = $str2 ]
then
echo "str1 = str2"
else
echo "str1 != str2"
fi
oracle@suse:~> ./test3.sh
word
str1 != str2

需要注意使用大于号和小于号时候要在其前面使用转义字符 \ .否则可能会报错,或者将大小于号当成重定向。

 oracle@suse:~> cat test4.sh
#!/bin/bash
#testing string str1=abcd
str2=abcdef if [ $str1 \< $str2 ]
then
echo "$str1 less than $str2"
fi
oracle@suse:~> ./test4.sh
abcd less than abcdef

3.3使用test进行文件比较

 -d  file      检查file是否存在并是一个目录
oracle@suse:~/testshell> cat testfile.sh
#/bin/bash
#test "-d file"
if [ -d $HOME/testshell ]
then
echo "$HOME/testshell is exists"
cd $HOME/testshell
pwd
else
echo "$HOME/testshell is not exists"
fi if [ -d $HOME/nba ]
then
echo "$HOEM/nba is exists"
cd $HOME/nba
pwd
else
echo "$HOME/nba is not exists"
fi oracle@suse:~/testshell> ./testfile.sh
/home/oracle/testshell is exists
/home/oracle/testshell
/home/oracle/nba is not exists

3.4复合条件测试,if-then允许使用布尔逻辑组合测试

[ command1 ] && [ command2 ]

[ command1 ] || [ command2 ]

 oracle@suse:~/testshell> cat showhello.sh
#/bin/bash
echo "hello world"
oracle@suse:~/testshell> cat testfile2.sh
#/bin/bash
#test [ command1 ] && [ command2 ] if [ -f $HOME/testshell/showhello.sh ] && [ -x $HOME/testshell/showhello.sh ]
then
cd $HOME/testshell
./showhello.sh
else
echo "it is not exists"
fi oracle@suse:~/testshell> ./testfile2.sh
hello world

3.5 if-then高级特性双尖括号与双中括号,(( expression ))双尖括号命令允许将高级数学表达式放入比较中,[[ expression ]]双方括号命令提供了针对字符串比较的高级特性。

 oracle@suse:~/testshell> cat testfile3.sh
#/bin/bash
#using double parenthesis var1=
var2= if (( ++var1* > var2 ))
then
echo "$var1*10 is greater $var2"
else
echo "$var1*10"
fi if [[ $USER == ora* ]]
then
echo "hello $USER"
else
echo "there is no this user"
fi
oracle@suse:~/testshell> ./testfile3.sh
* is greater
hello oracle

4.case命令

case variable in
pattern1 | pattern2 ) commands1 ;;
pattern3) commands2;;
*) default commands;;
esac
 oracle@suse:~/testshell> cat testcase.sh
#/bin/bash
#using the case command case $USER in
rich)
echo "hello rich";;
jim)
echo "hello jim";;
tom)
echo "hello tom";;
*)
echo "you are no here"
echo "user is $USER";;
esac
oracle@suse:~/testshell> ./testcase.sh
you are no here
user is oracle

linux shell脚本使用结构化命令的更多相关文章

  1. linux shell脚本使用结构化命令(2)

    一.for命令 二.while命令 三.until命令 1.for命令基本格式 for var in list do commands done oracle@suse:~/testshell> ...

  2. shell脚本之结构化命令if...then...fi

    if的用法日常主要用于数值或者字符串的比较来实现结构化的,模拟人脑,就是如果遇到什么事情,我们应该做什么 语法格式分为 1. if command;then command;fi    (如果if满足 ...

  3. Shell 语法之结构化命令(流程控制)

    许多程序在脚本命令之间需要某种逻辑流控制,允许脚本根据变量值的条件或者其他命令的结果路过一些命令或者循环执行这些命令.这些命令通常被称为结构化命令.和其他高级程序设计语言一样,shell提供了用来控制 ...

  4. shell初级-----更多结构化命令

    for命令 bash shell提供了for命令,允许你创建一个遍历一系列的循环. for var in list do commands done 1.读取列表中的值 for命令最基本的用法就是遍历 ...

  5. 【学习】Linux Shell脚本编程

    1.脚本的组成和执行 Linux shell脚本的结构并不复杂,其主要由变量.内部命令以及shell的语法结构和一些函数.其他命令行的程序等组成,以下是一个简单的shell脚本. #!/bin/bas ...

  6. 《Linux命令行与shell脚本编程大全》第十二章 使用结构化命令

    许多程序要就对shell脚本中的命令施加一些逻辑控制流程. 结构化命令允许你改变程序执行的顺序.不一定是依次进行的 12.1 使用if-then语句 如下格式: if command then     ...

  7. bash&nbsp;shell笔记2&nbsp;结构化命令

    二.使用结构化命令 知识内容: # 改变命令流 # 使用if-then逻辑 # 嵌套if-then # 测试条件 # 高级if-then功能 许多程序在脚本命令之间需要某些逻辑控制流,有些命令允许脚本 ...

  8. shell的结构化命令

    shell在逻辑流程控制这里会根据设置的变量值的条件或其他命令的结果跳过一些命令或者循环执行的这些命令.这些命令通常称为结构化命令 1.if-then语句介绍 基本格式 if command then ...

  9. linux shell 脚本攻略学习20--awk命令入门详解

    awk生于1977年,创始人有三个,分别为 Alfred Aho,Peter Weinberger, 和 Brian Kernighan,名称源于三个创始人的姓的首字母. 作用:处理文本文件. awk ...

随机推荐

  1. *HDU3339 最短路+01背包

    In Action Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  2. 中國區的代理協議的韓國遊戲廠商PatiGames

    “與阿裏巴巴簽署旗下游戲「突突三國」在中國區的代理協議的韓國遊戲廠商PatiGames決定與阿裏巴巴終止合作.”相信這條前不久報導的新聞,很多人並不陌生,但這背後其實並不像表面那樣簡單.早在今年4月P ...

  3. Moses 安装

    参考:Moses相关介绍与安装简介 http://www.52nlp.cn/moses-introduction 一.Moses简介 http://www.52nlp.cn/moses-introdu ...

  4. IOS网络第五天 AFN-01发送get和post请求

    ************AFN01-基本使用 #import "HMViewController.h" #import "AFNetworking.h" @in ...

  5. Public DNS (公共域名解析服务)

    114DNS 服务IP:114.114.114.114, 114.114.115.115 拦截 钓鱼病毒木马网站:114.114.114.119, 114.114.115.119 拦截 色情网站:11 ...

  6. Unity运行时检测Altas使用情况

    UI贴图在游戏中内存大小中占的分量非常非常大,尤其对于前期对UI没有规划的项目,无论是包量还是内存大小都是需要花费很多时间去优化.如果涉及到战斗场景和逻辑场景的情况下,常用的做法就是把两个场景使用的a ...

  7. wifi万能钥匙自媒体平台开放注册(付注册流程)

    12月13日,有网友爆料,wifi万能钥匙自媒体开放注册,看来自媒体还没有达到饱和阶段,也印证了自媒体时代才刚刚到来.现在这个自媒体的时代,几乎大多互联网企业都开通了自己的自媒体,比较知名的像今日头条 ...

  8. Xshell远程连接工具

    下载地址:http://rj.baidu.com/soft/detail/15201.html?ald Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft ...

  9. git review出现的问题

    在提交代码review的时候可能会出现 Could not connect to gerrit.Enter your gerrit username: xxxxTrying again with ss ...

  10. JMS

    发消息 与 收消息 http://www.huaishao8.com/config/activemq/143.html http://yingzhuo.iteye.com/blog/1566612 h ...