通过前两篇文章,我们掌握了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. Vue 打印预览功能

    需求有几种情况: 1.直接在HTML写页面,将页面上的东西用A4纸打印出来: 2.后台传回PDF文件,前台浏览器预览并打印: 3.后台做好要打印的,传回图片,如base64编码,前台浏览器 预览并打印 ...

  2. CAD交互绘制圆形批注(网页版)

    js中实现代码说明: 动态拖放时的绘制事件: function DoDynWorldDrawFun(dX,dY,pWorldDraw,pData) { //自定义实体的GUID标识符 var sGui ...

  3. CPP-基础:友元

    友元可以是一个函数,该函数被称为友元函数:友元也可以是一个类,该类被称为友元类. 我们已知道类具有封装和信息隐藏的特性.只有类的成员函数才能访问类的私有成员,程序中的其他函数是无法访问私有成员的.非成 ...

  4. struts2的多个文件上传

                成功效果图:                 上篇文章描述了单个文件的上传和配置,下面主要讲解下不同的地方: index.jsp <head> <script ...

  5. Codeforces Round #477滚粗记&&祭第一次div2场

    4.29 - 23:58:现在似乎在ST的样子……先等一波 Day4.29 prescript : 难得遇上一场9:00开始的div2,看了看大家都打,索性也当一回神仙吧. 晚上出去吃饭,匆匆赶回家, ...

  6. 【OS_Linux】三大文本处理工具之grep命令

    grep(global search regular expression(RE) and print out the line,整行搜索并打印匹配成功的行 语法:grep  [选项]   搜索词  ...

  7. Python9-函数-day9

    初识函数定义与调用 def my_len(): i = 0 for k in s1: i +=1 return i #返回值 # s = 'tim' s1 = '班主任阿娇' length =my_l ...

  8. Verilog学习笔记基本语法篇(三)·········赋值语句(待补充)

    在Verilog HDL语言中,信号有两种赋值方式. A)非阻塞赋值(Non-Blocking)方式(如:b<=a;) (1)在语句块中,上面语句所赋值的变量不能立即为下面的语句所用: (2)块 ...

  9. cs229_part2

    part2 这节课主要讲的是生成式模型,那么与这个生成式模型相对于的就是我们上节课所讲那几个辨别式模型.所以生成式模型和辨别式模型的区别是什么呢.我先给出数学上的定义: 这是我们上节课线性回归所用的给 ...

  10. as eclipse 对比

    eclipse目录结构 src:存放prj源码 gen:自动生成文件,R类存放资源文件的唯一id android+版本:项目jar包 assets:res存放资源文件,不会被gen生成资源id,同过a ...