通过前两篇文章,我们掌握了shell的一些基本写法和变量的使用,以及基本数据类型的运算。那么,本次就将要学习shell的结构化命令了,也就是我们其它编程语言中的条件选择语句及循环语句。

  不过,在学习shell结构化命令的时候,我们又会发现它与其它编程的语言相比存在不小的区别。下面就开始看看吧:

条件选择

在条件选择语句中,主要包含以下几种写法:

if-then语句

if command
then
commands
fi
 
例如:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAM8AAABICAIAAADeVjZoAAAD9klEQVR4nO2csW7VMBSGz+MgmR2pEm/gkWdg8s7EBpUsOtylE52QvMEEYs5z3D4CD3EZktzYucdO7Djntr7/JwtR17FD+3F8Ep+Wvj39nrUvjz/fvv+Ahla9EWxDE2uwDU2u0cPTn1n7+vjr6reF1mSjzw8/Zu3T/fc37zQaWvVG/y44Ho8EwB7ANiAHbANywDYgB2wDcsA2IAdsA3KkbVPGdZ0z6uIyZVx3xupad6OMqzmdtnVvT3r+5iiyTVvewc1Uti36n+WVzN8cJTupMm6nr3Fl20jbfUPP3vO3Rtu2KeN2DT17z98aEdv6jOQiLQvStbVpm3dRMDSczBl1tm36TGTtMiGVcRdXKuOctXn98KuUhdjGbhU5sc2PVn66x6c8o1H9Bd61wfDitFHb4bppBm2dUbn9+SsDItrdtlCMabaIMDMHz+NnK5ZuuGNw09ZZ66wmUsZZnd0PCtnXNmbn9XdMfvzUf159Lmdpdt4HK2Wc1dp2Vo+hKrcflCEa2xb7Y7ZVim19sDJ9fNLWGT2Eqtx+UMbeeZu2fFLfRz0mB2dtq5S3Be9jlXHOjSl/bj8oYm/biH32ZPq7IS3ibZsNLw8wnqnBYrn9oISS920AlAHbgBywDchxW7Yh9erpX+fIA9saIfYsFh2dGnI+RKm8brO2sQ/ObduW9XYmGd7ybFu/LmxrhOxyAfaCIVI5o8bCjI1RMqRF2/wCljDCp2pMuFqV5PgYzDyzIt/gjMSfP6hZsHr6lyyvm1+cEr9CKTX8sWUWhhZtI6JUbONqTCK1KvHxqWW5mhfvUMXbprxQklh3VU4/Ob7+m89P3N+GWXlgk7XuDdq2XJMSxh5ufIxYzcu0uHPz45Tw7GSqWig7JOOPBOOD56tMX7e80odV696gbZFTf27vTZ2kxRbl9/Dp0xcdMdtK88usiyu+C1mxLmxbrLfLsC1ZMKCM66wNqhTC+aeP5GyrWIx8y7axasTt4WtVsm2L1ryEtXpBtsikjltsi95BhFq6rVm3XdvCbY39LjJ51baddN08k2N9v7X+WOY+1+A9iOdqumk3zVq3YdteAS/k/V+93XQB2HZNXohtYgensO2avBjbhFiwjcl9zt0omgaZJG2LPs/DNlBCyrbMnz8AYAHYBuTgbWNOYLrhp8a5NA6AVRTGNvwqKVAAbANywDYgB2wDcsA2IAdsA3KkbAOgLrANyAHbgBywDcgB24AcsA3IAduAHLANyBGx7UB0IjoR3Y0DPxL9veaNggaI2PZMRER3RCeiAxERHca/AFBKxDY/jD0TnUb/ANgA8jYgB2wDcsA2IAdsA3LANiAHbANywDYgB2wDcsA2IAdsA2L8Bwb2xqi0qORsAAAAAElFTkSuQmCC" alt="" /> aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAV0AAAArCAIAAABU5syIAAAD1klEQVR4nO2d27WDIBBF7YdWKIVGKIQ+rCMtpIh7P1DkHUB0QM9e8xPiApXhMIDo8v1+P5/PomFCrQYl2AJuggm1rpJnjuAyXiW16XfDmDmH3xd5PVweHk59LiPj6AKgItVkbKW2/65NpwN9zZQMHi8woQY5kzb6nX8qp9r0PjCh/pblarvg7O+OF7gk1efmEC3QBSeTG+q+3AruQM8K5zLIqL43jrfOll69hy4kyj3aSsHJDFXpJ+AycrlMKCVYv9a850dGR10gb/9tTsM4Z9a9OFsdW1uxbmmvDpgqBEqUa7WPiBORV/Fl0hDVhU0PejVn4mBh6acL5E4whJPpuMn1nF7zeFTzgVyu5Df/wipruR9Bg+FyVYKFYXMb5MHC0kkXyD2AysK5O8k9z0k0Zx1WOEfpH/Y41s48kc9WfybQPw5JDYjL08lv70kLL6vH/JenC2H+Z4ejlizEhIYJpaSsS89esXMFdsm2XxVfEnQBNr5FWkDewfeGYDUlL6gP4wWrP+jQzzvFmSyPboFLJVhtera43HqW/qsiejC6QF73MFjGHE//0W5N32od7Pe3YUPqObngZXJIjpJSbaVIXp2eLTB2W7zkhHpEgC7AZrG9+/vp2U5fHQkdgibiLGZ1GKgEE446AGBCSa7/27r/2vQ85jLcC3MnyaALsGcZl+enFQx+E7FGEWfnHCMRBxNqlUL3+Vwqwbfuvza9sHhzm67QhUi+8cLtybRUeuKkvPyth2ajpwR7s52dCXTwvbFlFKH754gGxJeDtwKZUErth9SmJ8rlwv6RXHq+XhcWN/gqehY38eiRNZGaWF4n90gYuYWB/rnIIVyPqF+ijOpCIuDw+879mNr0eLnucsrxz0XjiNEg984ZbfCKIKK8iVQxwkMLPfi5TgnuYJL9lFNoVpaL90fQP+HYCW8/5TD19zKu2U9JHqoMJgqgmEJdQC3OBXmbhxfNTfj+BXLXgT3GwKxE38tC7k+w2Q3MTep9TeSOBRvcwJPRupDa70XufLDRDLwCrQuZfV3kjgg7YwC0oHUhv6+L3LlhDQZAO9v8wj37vQAAU7Dpwp37vQAAg7OvR3Td7wUAmBqzTtlzvxcAYGrwvSkAgA90AQDgA10AAPhAFwAAPkYXkt93dN+Vi2UHAJ7PoQup7zs+5c1UAIBSYuMId90RugDA20jpAuIFAN5LRBe8N+Ue8wuQBwDega8LbqxgU/gNMADA9Di6kBYF8zeEAYDnY+nCz2/tQBcAeAfO8wv5CQQuMY4A4BXsuhB86dsIgPWFHogCAK8Az0EDAHygCwAAj39hO4FbkQyKigAAAABJRU5ErkJggg==" alt="" />

吃瓜群众表示一脸懵比:if语句后面接的是命令,我们其它编程语言中,这儿都是接返回布尔值(true,false)的表达式。

那么这到底是怎么回事呢?

  在shell脚本的if其实是根据紧跟后面的那个命令的退出状态码来判断是否执行then后面的语句的。

关于退出状态码,你只需要记住:正常退出(命令执行正常)的状态码是0, 非正常退出的状态码不是0(有不少)。

以上语句的语义为: 如果if后面的命令执行正常(状态码0),那么就执行then后面的语句。否则不执行。 fi代表if语句的结束。

#!/bin/bash
#这儿由于pwd是linux内置的命令,因此执行后会正常退出(状态码0),所以会执行then中的语句
#如果此处替换为一个不存在的命令(例如: pw),那么就会非正常退出,不会执行then中的语句
if pwd
then
echo 执行then里面的语句
fi

if-then还可以简写为;

if command; then
commands
fi
 

因此,以上代码还可以写成以下:

#!/bin/bash
if pwd; then
echo 执行then里面的语句
fi
 

以上,如果我要判断处理异常退出(状态码非0)情况,该怎么办?

别着急: else 来帮你。

if-then-else语句

if command
then
commands
else
commands
fi
 

与if-then语句相比,这回多了个else语句,else语句用来判断if后面的命令非正常退出的情况。

#!/bin/bash
if pwd
then
echo 正常退出
else
echo 非正常退出
fi

甚至,我们还可以变形写出更多的else:

if else-if else语句

if condition1
then
command1
elif condition2
then
command2
else
commandN
fi

 

但是上面就只能根据退出状态码判断,不能写表达式,你还让我怎么写? 我各个编程语言直接吊打你!

不要慌,客官,请接着往下看:

  • test命令([ ]与test命令等价,前后留空格)

  test命令用于if-then或者if-then-else语句中,主要用于判断列出的条件是否成立,如果成立,就会退出并返回退出状态码0,否则返回非0。

  这意味着我们可以通过test命令来写表达式命令了。不过,对于已习惯其它编程语言的程序猿们(没学过的除外),不要高兴得太早,前方有坑,至于是什么坑,待会儿就能看到。

先看看test命令的基本用法吧:

  直接用:

test condition

结合if-then语句用

if  test condition
then
commands
fi

结合if-then-else语句用

if  test condition
then
commands
else
commands
fi

条件成立就执行then语句,否则else语句。

test命令只能判断以下三类条件:

  • 数值比较
  • 字符串比较
  • 文件比较

例如:if test用法:

[rwwwwst@iz2ze46xiz ~]# cat wwww.sh
if test $[<]
then echo '5 less than 3'
else
    echo '5 grater than 3'
fi

运行结果:

$ ./test.sh
5 less than 3

结果与我们想的不一样啊?

1.  数值比较  最好使用(( 5<3 ))  两个圆括号,前后空格

比较 描述
n1 -eq n2 判断n1是否等于n2
n1 -ge n2 判断n1是否大于或等于n2
n1 -gt n2 判断n1是否大于n2
n1 -le n2 判断n1是否小于或等于n2
n1 -lt n2 判断n1是否小于n2
n1 -ne n2 判断n1是否不等于n2

特别提醒: 以上表格不用你去记住,在命令行下面, 执行man test就能看到这些了。后面的对与另外两种比较的同理

将上面改为如下:

#!/bin/bash
if test -le
then echo '5 less than 3'
else
echo '5 grater than 3'
fi

运行结果:

$ ./test.sh
grater than

好好的标准的数学比较符号不能使用,难道非得写这种文本形式?是不是觉得很别扭?

不着急,还有替代方案:

使用双括号

双括号命令允许你在比较过程中使用高级数学表达式。关键是使用双括号,咱就可以用数学比较符号啦(等于==, 大于>, 小于< 等等都能使用啦)。
使用方法:

(( expression ))

注意:括号里面两边都需要有空格

所以上面也可以改写为:

#!/bin/bash
if (( < ))
then echo '5 less than 3'
else
echo '5 grater than 3'
fi

运行结果:

$ ./test.sh
grater than
 

2.  字符串比较(最好使用[[ str <str2 ]])  两个尖括号,前后空格

比较 描述
str1 = str2 判断str1是否与str2相同
str1 != str2 判断str1是否与str2不相同
str1 < str2 判断str1是否比str2小(根据ASCII)
str1 > str2 判断str1是否比str2大(根据ASCII)
-n str1 判断str1的长度是否非0
-z str1 判断str1的长度是否为0

程序猿们,要骂的就尽情释放吧。我反正是骂了。

test命令和测试表达式使用标准的数学比较符号来表示字符串比较,而用文本代码来表示数值比较。这与其它语言相比都不一样。

例如:

(1)比较字符串相等的例子:

#!/bin/bash
if test test1=test1
then
echo "same"
else
echo "not same"
fi
 结果:
$ ./test.sh
same
(2)比较字符串小于的例子:
#!/bin/bash
if test test1<Test1
then
echo "test less than Test1"
else
echo "not less"
fi
结果:(sh的时候将<当成一个重定向的符号,我们可以将<转义进行比较)
$ ./test.sh
./test.sh: line : Test1: No such file or directory
not less

改进:
#!/bin/bash
if test test1\<Test1
then
echo "test less than Test1"
else
echo "not less"
fi
结果:
$ ./test.sh
test less than Test1

注意,在使用大于(>)或小于(<)符号时,需要转义(\>)(\<),不然会把这两种符号时别为重定向(后面文章才会讲到)。

吐槽模式开启:我要用个比较符号,还要转义,很蛋疼的设计!

不要慌,大招一般都在后面:

使用双方括号

双方括号命令提供了针对字符串比较的高级特性。它不仅解决了使用test所带来的一系列毛病,还提供了一些test命令所没有的高级用法。双方括号命令的格式如下:

[[ expression ]]    

注意,可能有些shell不支持此种写法。不过bash完美支持。以上写法注意括号内两边都有空格。

#!/bin/bash
var1=test
var2=Test
if [[ $test < $test2 ]]
then
echo "test1 < test2"
else
echo "test1 >= test2"
fi

这下终于不用转义了。

因此上面也可以改为:

#!/bin/bash
if [[ test1<Test1 ]]
then
echo "test less than Test1"
else
echo "not less"
fi

结果:

$ ./test.sh
test less than Test1

文件比较

参数 说明
-e 文件名 如果文件存在则为真
-r 文件名 如果文件存在且可读则为真
-w 文件名 如果文件存在且可写则为真
-x 文件名 如果文件存在且可执行则为真
-s 文件名 如果文件存在且至少有一个字符则为真
-d 文件名 如果文件存在且为目录则为真
-f 文件名 如果文件存在且为普通文件则为真
-c 文件名 如果文件存在且为字符型特殊文件则为真
-b 文件名 如果文件存在且为块特殊文件则为真

另外,Shell还提供了与( -a )、或( -o )、非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为:"!"最高,"-a"次之,"-o"最低。例如:

cd /bin
if test -e ./notFile -o -e ./bash
then
echo '至少有一个文件存在!'
else
echo '两个文件都不存在'
fi

例如:

cd /bin
if test -e ./bash
then
echo '文件已存在!'
else
echo '文件不存在!'
fi
  •   select语句

select 变量 in 关键字
do
command1
...
command
done

  select把关键字的每一项做成类似表单,以交互的方式执行do和done之间的命。

例如:

#!/bin/bash
#select Useage
selectCh(){
echo "what is you favorite foods?"
select foos in "jidan" "dami" "fruit" "shi"
do
if [ "shi" = "$foos" ]
then
echo "you can not select shi?please select again!"
selectCh
exit
else
echo "you choice is ${foos}"
break
exit
fi
done
}
selectCh

运行结果:

[root@VM_0_12_centos sshDemo]# ./testSelect.sh
what is you favorite foods?
) jidan
) dami
) fruit
) shi
#?
you can not select shi?please select again!
what is you favorite foods?
) jidan
) dami
) fruit
) shi
#?
you choice is fruit
  • case语句

在使用if-then-else语句中,如果碰到条件很多的情况,如下:

#!/bin/bash
num=
if (( $num == ))
then
echo "num=1"
elif (( $num == ))
then
echo "num=2"
elif (( $num == ))
then
echo "num=3"
elif (( $num == ))
then
echo "num=4"
fi

如果再多点条件,看起来是不是很多?
此时,其实还有一种替代方案,那就是使用case.

case variable in
pattern1 | pattern2)
  commands1;;
pattern3)
  commands2;;
*)
  default commands;;
esac

;; 连续分号 (Terminator) 
  专用在 case 的选项,担任 Terminator 的角色。 
  case \"$fop\" inhelp) echo \"Usage: Command -help -version filename\";;version) echo \"version 0.1\" ;;esac

 

将以上代码替换为case:

#!/bin/bash
num=3
case $num in
)
echo "num=1";;
)
echo "num=2";;
)
echo "num=3";;
)
echo "num=4";;
*)
echo "defaul";;
esac

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAV0AAAAhCAIAAAD1fe/uAAAEkUlEQVR4nO1d25XrIAykH7fiUmiEQujDdaSFLeLej/ghQMI8DUlmjj7WbCxAEYPAyFF/BK/XSym1aLsRWL2oo9Ssasdqzv8Q0A8t2oofuYpXQ7U2xKKtU/miLan2upLKs7GazayXgvdloNEzI9/wO9M6ZuO/iUI7R/ovafBvcdtzW69kH8EMMtyawnq9ElG/1H7BzmEXCvvl3FDhh40Q8gKPGC+shhIJ/TpOjjkLGT09eOEYlrSAHf9SeXGNi7abWc9L353SOnxnt0uLRDRldq7nBW9WITMLD8k+9wQabUYaL0h2Y9ofaQ9rtIJ+uV9ql9kyHWW8QK6oAYROU458hBf8YEE9yAt7n0xpvOB2g7cbvYjFCwN4ITKvptTozquZvJAdL3D6pfa3jBeEfh33rGZwsKAyecFZI9BRsPdzNednVs1PkvHv711LulH4zzO04Hyvzl1SeW57aITyDqDIhH5ouB80kt3IrXt45pBE4GrDeIE6QQoE++TyAr1hn/PLeEFsP29nRnVFv1azbdYODxZUHi9YrQ2Nra7/nEuIt89avbhrC3dG7swLwRqC1LW3ZqXOLJXntceplYmumFWWoEYIwenagjWbU8c4Xgjac2s+zj7ZvEDU7O5XyAuR9jN2Dss9L8jr12qy/L8fUnnhY8AGC8yH7jd/AOBpdNuHz8W38YIULLgALwATYiL3+zZeSAN4AZgKx/JxilhBKYkXnAWTM1D+EWEL41KM7OfZk6Fd+yVNueVtEGinGyQ1tbbSk6L/ieGYFshWo2BfhoXMC4zy9PEPgVQKccWu84H0NME5nlaLpF2vFnieF4Y7CuRn5XFe2Pmg1XB+KFhQiBcgvyd9wPHCfrKo0bnDx4IF9TwvLNpu23DPgEAkKYXHC+4Bkhb7DwEtkAMzmh5t9MsTGh5swey8cG0QFjY9ixc2UANkYmFw+K2bO0F9O4wXDu9vcx7Zq45O6NJB9738Tm0svyOePXOPLF6gVhruBBBIKMEoIcePzz+Dc9vB0chmmwu+Encb9briyu8U98xXzuIFpgYhb2y4f0B+UwLvDI8lh8fmhRPNDR6TVuX13qunZ+NJSYO8xFpeiOWNWb2MdxTIT0k+/KFDVhG1+3dMxNGWF65Pt85XruUFMV8wkkfoN3a4M0G+Q4rge2PJKqJPXm9Mf1m+cjqqeUG5wVewxcJtiwr5Z2SDlbcnn0I43B0hz0jgOvVxfuhYRY8o++T1xvSX5SunI+v8wrQY7rKQApnDwTqlMDbI623epgzk5kfMjOGODkmURodvatA5P6JFXm/rNuWA5wVgFGL7uzlrtZx3wTyDz5xr+gK8AADA52AAL/TOoAUAoBIDeGFZ6ANLMAMATIeh6wi8HgkApoTPC1I+lrsfdj7beY9svb/Flj/eIQK0AABzguWFkw4uNojwwvHmcmvNmxr238YIEJxCBykAwJRgeYE5shyNFxb3d7ZSh/unv7MRAL4Vwjri+HdXXsDGIwDMiSJecJcXLC9E1xEnsMMAADMilReE30fEOgIAvhDJvOC8A6JqHUFDiTmO6AIAQPEfQb9U6UI+Hb0AAAAASUVORK5CYII=" alt="" />

例如:一个启动tomcat的脚本:

#!/bin/sh
# chkconfig:
# description: Auto-starts tomcat
# /etc/init.d/tomcatd
# Tomcat auto-start
# Source function library.
#. /etc/init.d/functions
# source networking configuration.
#. /etc/sysconfig/network
RETVAL=
export JAVA_HOME=/usr/java/jdk1..0_60
export JRE_HOME=/usr/java/jdk1..0_60/jre
export CATALINA_HOME=/usr/local/tomcat
export CATALINA_BASE=/usr/local/tomcat
start()
{
if [ -f $CATALINA_HOME/bin/startup.sh ];
then
echo $"Starting Tomcat"
$CATALINA_HOME/bin/startup.sh
RETVAL=$?
echo " OK"
return $RETVAL
fi
}
stop()
{
if [ -f $CATALINA_HOME/bin/shutdown.sh ];
then
echo $"Stopping Tomcat"
$CATALINA_HOME/bin/shutdown.sh
RETVAL=$?
sleep
ps -fwwu root | grep tomcat|grep -v grep | grep -v PID | awk '{print $2}'|xargs kill -
echo " OK"
# [ $RETVAL -eq ] && rm -f /var/lock/...
return $RETVAL
fi
} case "$1" in
start)
start
;;
stop)
stop
;; restart)
echo $"Restaring Tomcat"
$ stop
sleep
$ start
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit
;;
esac
exit $RETVAL

最后附三个简单的例子:

(0)字符串比较是例子:

#!/bin/bash
#string complare example
echo "please input the first string"
read str1
echo "please input the second string"
read str2
if [ ${str1} = ${str2} ]
then
echo "${str1} = ${str2}"
elif [ ${str1} \< ${str2} ]
then
echo "${str1} < ${str2}"
else
echo "${str1} > ${str2}"
fi

结果:

[root@VM_0_12_centos sshDemo]# ./testString.sh
please input the first string
a
please input the second string
b
a < b
[root@VM_0_12_centos sshDemo]# ./testString.sh
please input the first string
a
please input the second string
a
a = a

(1)判断apache服务是否开启,如果没开启就打开apache服务:(字符串比较)

#!/bin/bash
web=`/usr/bin/pgrep httpd`
#start detect apache Server
if [ "$web" != "" ]
then
echo "apacheserver is running!"
else
echo "apache server is not running;"
`which httpd`
fi

(2)比较两个数大小的例子(数字比较)

#!/bin/bash
if [ "$#" -eq ]
then
echo "please input two number"
else
if [ "$1" -lt "${2}" ]
then
echo "$1 is less than ${2}"
else
echo "$1 is equal or grater than $2"
fi
fi

结果:

[root@VM_0_12_centos sshDemo]# ./testNum.sh
is less than

(3)文件测试:

#!/bin/bash
if [ -f "$1" ]
then
echo "file is a plain file!"
if [ -u "$1" ]
then
echo "file has SUID!"
else
echo "file not has SUID!"
fi elif [ -d "$1" ]
then
echo "file is a directory!"
else
echo "file is not in this system!"
fi

运行结果:

[root@VM_0_12_centos sshDemo]# ./testFile.sh testApache.sh
file is a plain file!
file not has SUID!

加上SUID位之后查看运行效果:

[root@VM_0_12_centos sshDemo]# chmod u+s testApache.sh
[root@VM_0_12_centos sshDemo]# ./testFile.sh testApache.sh
file is a plain file!
file has SUID!

总结

   (1):取变量的时候最好${x}加上{}号,$#代表取参数的个数。

  (2)简单的比较大小的test用一个尖括号即可,如果是逻辑运算符用两个尖括号。

   (3)字符串比较大小用[]的时候用=,!=这些符号,而且用<,>符号的时候要转义\<;另外[]前后要有空格,比较符前后也必须有空格。用[[]]比较字符串不用转义。

(4)数字比较大小用[]的时候用-lt,-gt等这些符号,另外[]前后要有空格,比较符前后也必须有空格;如果使用两个圆括号数字比较也可以使用>,<这些,而且不用转义;用(())也可以对数字进行计算。

小结

  本篇主要讲了条件语句。shell中的条件语句与其他编程语言相比有不小的区别,最大的区别就在于条件语句后接的是命令,而不是布尔值, 是根据命令执行退出的状态码来决定是否进入then语句的。这点需要牢记。

  接下来可以学习shell编程四:http://www.cnblogs.com/qlqwjy/p/7746001.html

  关于括号的用法参考:http://www.cnblogs.com/qlqwjy/p/8684630.html

【shell】shell编程(三)-if,select,case语句的更多相关文章

  1. centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课

    centos  shell脚本编程2 if 判断  case判断   shell脚本中的循环  for   while   shell中的函数  break  continue  test 命令   ...

  2. select case语句 is和to用法

    在select case 语句中可以使用关系运算符大于>小于<等于=等关系运算符,需要用关键字IS和TO.用个例子来说明: Private Sub Command1_Click() Dim ...

  3. Shell编程-07-Shell中的case语句

    目录 基本语法 case示例 case语句总结     case语句相当于多分支的if/elif/else语句,而在使用case会让脚本看起来更简单工整.在case语句中,程序会将获取到的值与case ...

  4. Linux shell脚本编程(三)

    Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...

  5. Linux shell脚本 (十二)case语句

    case语句 case ... esac 与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构. case 语句匹配一个值或一个模式,如果匹配成功,执行相匹配的命令.case ...

  6. [shell基础]——if/for/while/until/case 语句

    for语句 do echo $loop done ` do echo $loop done for loop in `ls /tmp` do echo $loop done while语句 while ...

  7. Linux之shell脚本for、while、case语句的高级用法

    1.case语句的用法: [root@ELK-chaofeng test]# cat test3.sh #!/bin/bash while true ;do read -p "please ...

  8. [VB.NET Tips]Select Case语句拾遗

    正常的Select 语句如下: Dim status As Integer = 5 Select Case status Case 0 Console.WriteLine("状态是:0&qu ...

  9. shell 脚本 for,while,case 语句详解及案例

    ################for循环语句的结构#############使用for循环语句时,需要指定一个变量及可能的取值列表,针对每个不同的取值重复执行相同的命令序列,直到变量值用完退出循环. ...

随机推荐

  1. 在idea下创建maven

    之前一直用eclipse,现在要用idea写一个安装过程玩玩 一:New Project 二:选择maven,在project SDK上选择你安装的jdk,默认安装在c:/Program Files ...

  2. mac 上node.js环境的安装与测试【转】

    http://blog.csdn.net/baihuaxiu123/article/details/51868142 一 摘要 如何大家之前做过web服务器的人都知道,nginx+lua与现在流行的n ...

  3. Eclipse调试:Run on server 和 Debug on server 区别

    Run on server: 以正常模式运行程序.会直接把程序从头到尾执行一遍,运行完就结束,不会进入到源代码里面(即使源代码中设置了断点). Debug on server: 以调试模式运行程序,或 ...

  4. Luogu P1080国王游戏(贪心)

    国王游戏 题目链接:国王游戏 ps:题目数据说明了要写高精度. 这个题的答案是\(a.l * a.r < b.l * b.r\)按照这个进行排序 题解中大部分只是如何证明排序是: \(a.l * ...

  5. GIMP图像窗口的自定义

    具体功能包含:初始缩放比例.空格键按下时触发动作

  6. 继上次编译openwrt之后,添加web界面

    上编博客写了关于openwrt编译环境和编译一个默认配置的openwrt系统. 现在我正在做如何添加web界面.(hiwooya自带的luci web) 方法如下: 首先在编译环境中配置 make m ...

  7. 【php】运算符优先级界定

    <?php $i = 1; $array[$i] = $i++; print_r($array);die; //输出 Array([2] => 1) $a = 1; echo $a + $ ...

  8. Linux 磁盘相关

    挂载文件系统 mount mount [-t fstype] filesystem dir ##mount /dev/sdb /data 卸载文件系统 umount umount /dev/sdb u ...

  9. 《嵌入式linux应用程序开发标准教程》笔记——8.进程间通信

    , 8.1 概述 linux里使用较多的进程间通信方式: 管道,pipe和fifo,管道pipe没有实体文件,只能用于具有亲缘关系的进程间通信:有名管道 named pipe,也叫fifo,还允许无亲 ...

  10. Hive和Hbase整合

    Hive只支持insert和delete操作,并不支持update操作,所以无法实施更新hive里的数据,而HBASE正好弥补了这一点,所以在某些场景下需要将hive和hbase整合起来一起使用. 整 ...