linux case in 怎么linux正则匹配数字2个数字

Technorati 标签:
一直在找Switch Case语句中多个值匹配一个代码块的写法,以为像VB一样,可以用逗号分隔什么的,怎么试都不行,今天看一老外写的代码,没想到写法这样简单.
class SwichCaseTest
public static void Main(string[] args)
CaseTest(1);
CaseTest(2);
CaseTest(5);
CaseTest(8);
public static void CaseTest(int i)
switch (i)
case 1:case 2:case 3:case 4:
Console.WriteLine("ok!**********");
Console.WriteLine("wrong!*******");
Console.WriteLine("default case!*********");
本文已收录于以下专栏:
相关文章推荐
1、支持整数表达式
也就是结果是整数的都行。
但是不支持long类型。
jdk7以后支持字符串String类型
2、default如果所有情况都考虑到可以不加
3、case里边可...
welcome09.html
About these girls
script09.js
switch语句的基本形式
switch(表达式)
case 常量表达式1: 语句1
case常量表达式2: 语句2
.case常量表达式n: 语句n
不同于java的swith-case 和 scala的match-case, Python里面没有这类关键字. 所以只能通过字典实现:先定义一个字典以确定映射关系,再通过get('key')方法获取到...
switch case语句里面不能定义对象,有语法错误,除非加一个花括号 
16:49 114人阅读 评论(0) 收藏 举报
 分类:
iOS(24...
在Java 7中,catch代码块得到了升级,用以在单个catch块中处理多个异常。如果你要捕获多个异常并且它们包含相似的代码,使用这一特性将会减少代码重复度。下面用一个例子来理解。
在向SQL2005导入Excel数据时,出现以下错误:* 错误 0xc020901c: 数据流任务: 输出“Excel 源输出”(9) 上的 输出列“hw_content”(63) 出错。返回的列状态...
昨天将excel表格中的数据导入数据库时遇到以上问题,老是提示数据被截断之类的错误,google了一下,出来好多解决方案,什么修改注册表啊,什么excel格式不对了,修改excel文件后缀了,总之就是...
他的最新文章
讲师:汪剑
讲师:刘道宽
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)酷勤网 C 程序员的那点事!
浏览次数:次
作者:rain0216
&mygod 回复于: 16:55:55
假设要判断的变量为name,则方法如下:
asd=`echo&$name&|&awk&'{
&&if&(substr($1,1,1)&=0&&&&substr($1,1,1)&&=9&&&
&&&&&&substr($1,2,1)&&=0&&&&substr($1,2,1)&&=9&&&
&&&&&&substr($1,3,1)&&=0&&&&substr($1,3,1)&&=9&&&
&&&&&&substr($1,4,1)&&=0&&&&substr($1,4,1)&&=9)
&&&&&&printf(&true&);
&&&&&&printf(&false&);
if&[&asd&=&&true&&]&#是数字
elif&&#不是数字
这个办法比较笨,不知其他人有没有更好的方法!
&liangzi 回复于: 15:15:56
在awk或case语句中对变量使用正则表达式&^....$&看其是否匹配就可以了。
&liangzi 回复于: 15:37:55
不好意思,应该用正则表达式[0-9][0-9][0-9][0-9]更简单。上面的方法想补救的话,可用
#!/bin/sh
&expr&$1&+&10(任意数字)&&/dev/null&2&&1
&STATUS=$?&(测试上条语句是否成功)
&if&[&$STATUS&!=&0&];then
&echo&&$1&is&composed&of&number&&
执行test&$name
&mygod 回复于: 15:39:40
对,好办法!
&shuweich 回复于: 12:49:49
if&!&echo&$V|grep&'.....'&&/dev/null
&&&&&&&&if&echo&$V|grep&'[0-9][0-9][0-9][0-9]'&&/dev/null
&&&&&&&&then
&&&&&&&&&&&&&&&&echo&&ok&
&&&&&&&&else
&&&&&&&&&&&&&&&&echo&&bad&number&
&&&&&&&&fi
&&&&&&&&echo&'bad&number'
#&./zcc&1234
#&./zcc&123333
bad&number
#&./zcc&123
bad&number
试试如何?
&hyxdh 回复于: 21:19:38
为何不用case呢?更简单!
case&$a&in
&&&&&[0-9][0-9][0-9][0-9])&echo&变量是由4个数字组成&;;
&&&&&*)&echo&&变量不是由4个数字组成&;;
&caoshun 回复于: 10:34:13
还是用CASE这种方法比较高。
&michaelds 回复于: 17:48:10
借这个帖子提醒大家,模式匹配用了awk,grep,case这些常用的,可别忘了还有expr啊。有时反而更直接。对于本例:
expr&$str&:&'^[0-9][0-9][0-9][0-9]$'
如果值为4就是满足要求的串,否则为0。
&valentine 回复于: 23:08:58
[这个贴子最后由valentine在&&11:42pm&编辑]
grep,awk,expr,case全用到了。
讨论热烈的一个好贴。
偶用&expr&$1&:&[0-9]*&|grep&4
&michaelds 回复于: 09:26:24
valentine&,偷懒可不行啊,对于expr&$1&:&[0-9]*来说,如果$1=&1234a&的话结果也是4。
&valentine 回复于: 10:50:55
michaelds&&& &确实逻辑严密啊。
加个$限制一下好了。
expr&$1&:&&[0-9]*$&&|grep&4&
&独孤求胜 回复于: 21:35:05
如果测试变量a
test&$a&-gt&999&-a&$a&-lt&10000&2&/dev/nul
再判断$?就OK了
&torrent 回复于: 10:52:34
引用:下面引用由[u]valentine[/u]在&&10:50am&发表的内容:
michaelds&&& &确实逻辑严密啊。
加个$限制一下好了。
expr&$1&:&&*$&&|grep&4
什么时候才能像版主一样高啊!!
&lovesaka 回复于: 01:46:39
if&[[&&$str&&=~&&\b[0-9]{4}\b&&]]
&寂寞烈火 回复于: 02:12:26
引用:原帖由&lovesaka&于&&01:46&发表
if&[[&&$str&&=~&&\b[0-9]{4}\b&&]]
这需要bash3.0吧
[[&$str&==&[0-9][0-9][0-9][0-9]&]]
&lovesaka 回复于: 02:27:03
引用:原帖由&寂寞烈火&于&&02:12&发表
这需要bash3.0吧
[[&$str&==&[0-9][0-9][0-9][0-9]&]]&
哦忘了那时候还没有这个
还是火哥你牛B我还是新手不知道以前版本啥样的翻了老贴别见怪:em05:
[&本帖最后由&lovesaka&于&&02:40&编辑&]
&awk就是awp加ak 回复于: 11:53:55
if&里面的&引用:=~
&是虾米意思?
&lovesaka 回复于: 02:49:16
引用:原帖由&awk就是awp加ak&于&&11:53&发表
if&里面的&&是虾米意思?&
猜都猜得出
&awk就是awp加ak 回复于: 10:17:44
也只能靠猜得了。我这每&bash3
&寂寞烈火 回复于: 12:51:16
引用:原帖由&awk就是awp加ak&于&&10:17&发表
也只能靠猜得了。我这每&bash3&
有些类似perl的绑定~
&awk就是awp加ak 回复于: 12:08:11
谢谢!不过&perl&我也一窍不通&
日后和它有缘的话再说吧
& 相关主题:
下一篇:没有了linux shell命令行选项与参数用法详解
字体:[ ] 类型:转载 时间:
本文介绍了linux shell中使用命令行选项与命令行参数的方法,在bash中,可以用以下三种方式来处理命令行参数,每种方式都有自己的应用场景
问题描述:在linux shell中如何处理tail -n 10 access.log这样的命令行选项?在bash中,可以用以下三种方式来处理命令行参数,每种方式都有自己的应用场景。1,直接处理,依次对$1,$2,...,$n进行解析,分别手工处理;2,getopts来处理,单个字符选项的情况(如:-n 10 -f file.txt等选项);3,getopt,可以处理单个字符选项,也可以处理长选项long-option(如:--prefix=/home等)。总结:小脚本手工处理即可,getopts能处理绝大多数的情况,getopt较复杂、功能也更强大。1,直接手工处理位置参数必须要要知道几个变量, 代码如下: && *&&& $0 :即命令本身,相当于c/c++中的argv[0]&&& *&&& $1 :第一个参数.&&& *&&& $2, $3, $4 ... :第2、3、4个参数,依次类推。&&& *&&& $#& 参数的个数,不包括命令本身&&& *&&& $@ :参数本身的列表,也不包括命令本身&&& *&&& $* :和$@相同,但"$*" 和 "$@"(加引号)并不同,"$*"将所有的参数解释成一个字符串,而"$@"是一个参数数组。 手工处理方式能满足多数的简单需求,配合shift使用也能构造出强大的功能,但处理复杂选项时建议用下面的两种方法。例子,(getargs.sh): 代码如下:#!/bin/bashif [ $# -lt 1 ]; then&&& echo "error.. need args"&&& exit 1fiecho "commond is $0"echo "args are:"for arg in "$@"do&&& echo $argdone运行命令: 代码如下:./getargs.sh 11 22 cccommond is ./getargs.shargs are:1122cc2,getopts (shell内置命令)处理命令行参数是一个相似而又复杂的事情,为此,c提供了getopt/getopt_long等函数,c++的boost提供了options库,在shell中,处理此事的是getopts和getopt。getopts/getopt的区别,getopt是个外部binary文件,而getopts是shell builtin。 代码如下:[root@jbxue ~]$ type getoptgetopt is /usr/bin/getopt[root@jbxue ~]$ type getoptsgetopts is a shell builtingetopts不能直接处理长的选项(如:--prefix=/home等)关于getopts的使用方法,可以man bash& 搜索getoptsgetopts有两个参数,第一个参数是一个字符串,包括字符和“:”,每一个字符都是一个有效的选项,如果字符后面带有“:”,表示这个字符有自己的参数。getopts从命令中获取这些参数,并且删去了“-”,并将其赋值在第二个参数中,如果带有自己参数,这个参数赋值在“optarg”中。提供getopts的shell内置了optarg这个变变,getopts修改了这个变量。这里变量$optarg存储相应选项的参数,而$optind总是存储原始$*中下一个要处理的元素位置。while getopts ":a:bc" opt& #第一个冒号表示忽略错误;字符后面的冒号表示该选项必须有自己的参数例子,(getopts.sh): 代码如下:echo $*while getopts ":a:bc" optdo&&&&&&& case $opt in&&&&&&&&&&&&&&& a ) echo $optarg&&&&&&&&&&&&&&&&&&& echo $;&&&&&&&&&&&&&&& b ) echo "b $optind";;&&&&&&&&&&&&&&& c ) echo "c $optind";;&&&&&&&&&&&&&&& ? ) echo "error"&&&&&&&&&&&&&&&&&&& exit 1;;&&&&&&& esacdoneecho $optindshift $(($optind - 1))#通过shift $(($optind - 1))的处理,$*中就只保留了除去选项内容的参数,可以在其后进行正常的shell编程处理了。echo $0echo $*执行命令: 代码如下:./getopts.sh -a 11 -b -c-a 11 -b -c113b 4c 55./getopts.sh3,getopt(一个外部工具)具体用用法可以 man getopt#-o表示短选项,两个冒号表示该选项有一个可选参数,可选参数必须紧贴选项,如-carg 而不能是-c arg#--long表示长选项例子,(getopt.sh): 代码如下:#!/bin/bash# a small example program for using the new getopt(1) program.# this program will only work with bash(1)# an similar program using the tcsh(1) script. language can be found# as parse.tcsh# example input and output (from the bash prompt):# ./parse.bash -a par1 'another arg' --c-long 'wow!*\?' -cmore -b " very long "# option a# option c, no argument# option c, argument `more'# option b, argument ` very long '# remaining arguments:# --& `par1'# --& `another arg'# --& `wow!*\?'# note that we use `"$@"' to let each command-line parameter expand to a# separate word. the quotes around `$@' are essential!# we need temp as the `eval set --' would nuke the return value of getopt.#-o表示短选项,两个冒号表示该选项有一个可选参数,可选参数必须紧贴选项#如-carg 而不能是-c arg#--long表示长选项#"$@"在上面解释过# -n:出错时的信息# -- :举一个例子比较好理解:#我们要创建一个名字为 "-f"的目录你会怎么办?# mkdir -f #不成功,因为-f会被mkdir当作选项来解析,这时就可以使用# mkdir -- -f 这样-f就不会被作为选项。temp=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \&&&& -n 'example.bash' -- "$@"`if [ $? != 0 ] ; then echo "terminating..." &&2 ; exit 1 ; fi# note the quotes around `$temp': they are essential!#set 会重新排列参数的顺序,也就是改变$1,$2...$n的值,这些值在getopt中重新排列过了eval set -- "$temp"#经过getopt的处理,下面处理具体选项。 do&&&&&&& case "$1" in&&&&&&&&&&&&&&& -a|--a-long) echo "option a" ;;&&&&&&&&&&&&&&& -b|--b-long) echo "option b, argument \`$2'" ; shift 2 ;;&&&&&&&&&&&&&&& -c|--c-long)&&&&&&&&&&&&&&&&&&&&&&& # c has an optional argument. as we are in quoted mode,&&&&&&&&&&&&&&&&&&&&&&& # an empty parameter will be generated if its optional&&&&&&&&&&&&&&&&&&&&&&& # argument is not found.&&&&&&&&&&&&&&&&&&&&&&& case "$2" in&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "") echo "option c, no argument"; shift 2 ;;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& *)& echo "option c, argument \`$2'" ; shift 2 ;;&&&&&&&&&&&&&&&&&&&&&&&;&&&&&&&&&&&&&&& --);&&&&&&&&&&&&&&& *) echo "internal error!" ; exit 1 ;;&&&&&&& esacdoneecho "remaining arguments:"for arg do&& echo '--& '"\`$arg'" ;done运行命令: 代码如下:./getopt.sh --b-long abc -a -c33 remainoption b, argument `abc'option aoption c, argument `33'remaining arguments:--& `remain'以上就是有关linux shell命令行选项与参数用法的详细内容,希望对大家有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具用户名:樊聪
文章数:28
访问量:3436
注册日期:
阅读量:1297
阅读量:3317
阅读量:582281
阅读量:466973
51CTO推荐博文
的变量有哪些?怎么样定义用户变量和环境变量?在Linux的shell中使用的变量分为以下环境变量、内部变量和用户变量3类。环境变量是Linux系统环境的一部分,通常不需要用户去定义。shell使用环境变量来存储系统信息,这些变量可以提供给在shell中执行的程序使用,不同的shell会有不同的环境变量及其设置的方法。内部变量是由系统提供的,用户不能修改它们。用户变量是用户在编写shell脚本的时候定义的,可以在shell脚本中任意使用和修改。如果希望一个用户定义的变量能够在定义它的shell脚本以外使用,就必须使用export命令。例如,“export var”命令就是将用户定义的变量var添加到系统变量列表中,这样就可以在定义var变量脚本以外的地方使用。在Linux的bash中可以使用set命令来查看系统当前的环境变量及其取值。由于Linux的环境变量很多,这里利用管道符和tail命令与set命令结合只显示系统环境变量的最后10个。若要查看当前某个环境变量的值,可以使用echo命令,并在环境变量的前面加上“$”即可。命令主提示符是Linux的shell程序为用户输入命令而设置的提示符。环境变量PS1的值就是命令主提示符,默认为“[\\u@\\h \\W]\\$”,其中“[”、“]”和“@”原样显示;“\\u”相应位置显示当前登录的用户账号;“\\h”表示相应位置显示主机名;“\\W”相应位置当前工作目录;“\\$”表示如果当前登录账号是超级用户就显示“#”,如果是普通用户就显示“$”。例如,当超级用户登录myhost主机时,命令提示符显示为“[root@myhost root]#”。环境变量PATH记录了命令执行时的默认的搜索路径,即当用户在命令提示符后输入命令时,Linux系统会按照PATH设置的路径搜索该命令,然后再执行该命令。PATH变量的值由多个路径组成,各路径之间使用“:”隔开。1)变量的声明在bash中,变量的使用不需要显式的声明,或者说赋值就可以认为是变量的声明。通常,给一个变量赋值应采用如下的格式:变量名=值注意:等号两边不能存在分隔符(包括空格,制表位和回车符)。2)变量的引用通常,要引用一个变量,可以采取在变量名前加一个$的方法,即“$变量名”。例如,要引用上面定义的变量a1可以采用如下的方法:echo &a1 is $a1&但是,有时候这种方法会产生混淆。例如,希望使用变量a1来输入“helloLinux”字符串。如果使用echo “$a1Linux”就会得不到期待的字符。这是因为bash把“a1Linux”作为一个变量来处理了。此时可以选择使用以下的几种用法(其中,value代表一个变量可能取的具体的值):Ø${变量var:-value}:如果指定的变量var存在,则返回var的值,否则返回value。Ø${变量var:=value}:如果指定的变量var存在,则返回var的值,否则先将value赋给var,然后再返回value。Ø${变量var:+value}:如果指定的变量var存在,则返回value,否则返回空值。Ø${变量var:?value}:如果指定的变量var存在,则返回该var的值,否则将错误提示消息value送到标准错误输出并退出shell程序。Ø${变量var:offset[:length]}:offset和length是整数,中括号表示可选部分。表示返回从变量var的第offset+1个字符开始长度为length的子串。如果中括号部分省略,则表示返回变量var第offset+1个字符后面的子串。3)特殊变量在shell程序中存在一些特殊变量,当shell程序运行时,这些变量能够记录shell程序的命令行参数。这些变量分别是$0、$1、…$n,以及$#、$*和$@。其中$0存放的是命令行的命令名,$1存放的是命令行中传递给命令的第一个参数,依次类推,$n存放的是传递给命令的第n个参数。$#存放传递给命令的参数的个数(不包括命令),$*和$@均用于存放传递给命令的所有参数,两者的区别在于$*把所有的参数作为一个整体,而$@则把所有的参数看作是类似于字符串数组一样,可以单独访问这些参数。1.echo 命令可以显示文本行或者变量,或者把字符串输入到文件echo [option] string-e 解析转义字符,转义符包括( &\\c,回车不换行 &\\f,禁止 &\\t,跳格 &\\n)回车换行 &-n 回车不换行,linux系统默认回车换行2.read从键盘或者文件的某一行文本中读如信息,并将其赋给一个变量read varible1 varible2如果只指定了一个变量,那么read将会把所有的输入赋给该变量,直到遇到第一个文件结束符或回车;如果给出了多个变量,它们按吮吸分别赋给不同的变量,。shell将用空格作为变量之间的分隔符举例说明:在shell脚本中有read A B C命令行,而在提示的命令行中输入1 2 3,则A=1,B=2,C=3(注意:若直接在命令行中输入read A B C,则表示只有一个变量A)3.cat可以用来显示文件内容、创建文件,还可以用它来显示控制字符。cat |options|filename1..filename2...-v显示控制字符使用cat命令时要注意,它不会在文件分页符处停下来,它会一下显示完整个文件。如果希望每次显示一页,可以使用more命令或者把cat命令的输出通过管道传递给另外一个具有分页功能的命令(如more,less)中。 &cat命令举例: &cat myfile1 myfile2 myfile3&myfile123; &cat myfile123|more 分页显示 &cat -v dos.txt 会出现“^M”等控制字符,这是在windows下的编辑器留下的4.管道可以通过管道把一个命令的输出作为另一个命令的输入举例说明:df -k |awk '{print $1}'|grep -v &Filesystem& &df:显示所有文件系统对i节点和磁盘块的使用情况 &awk:浏览和抽取信息 &grep:文本过滤显示所有文件系统对i接点和磁盘块的使用情况信息中的第一列并不含有&Filesystem&的信息5.tee 把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中tee -a file 这个命令一般用于管道之后。举例说明:cat file|tee file.out 将file中的信息输出到屏幕并拷贝到file.out中6.exec 命令可以用来代替当前shell;换句话说,并没有启动子shell,使用这一命令时任何现有环境都会被清除,并重新启动一个shellexec command其中的command通常是一个shell脚本对文件描述符操作的时候(也只有在这时),它不会覆盖你当前的shell如:exec **.sh 会重新登录并清除环境变量7.标准输入、输出和错误在shell中执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆,shell同时也给出了相应的文件名。文件文件描述符输入文件----标准输入 & & & & & & 0(缺省是键盘,也可以是文件或者其他命令的输出)输出文件---标准输出 1(缺省是屏幕,也可以是文件)错误输出文件--标准错误 & & 2(缺省是屏幕,也可以是文件)系统中实际有12个文件描述符,可以任意使用文件描述符3-98.文件重定向改变程序运行的输入来源或输出地点 & & command & filename 把把标准输出重定向到一个新文件中 & & command && filename 把把标准输出重定向到一个文件中(追加) & & command 1 & fielname 把把标准输出重定向到一个文件中 & & command & filename 2&&1 把把标准输出和标准错误一起重定向到一个文件中 & & command 2 & filename 把把标准错误重定向到一个文件中 & & command 2 && filename 把把标准输出重定向到一个文件中(追加) & & command && filename 2&&1 把把标准输出和标准错误一起重定向到一个文件中(追加) & & command & filename &filename2 把command命令以filename文件作为标准输入,以filename2文件作为标准输出 & & command & filename 把command命令以filename文件作为标准输入 & & command && delimiter 把从标准输入中读入,直至遇到delimiter分界符 & & command &&m 把把文件描述符m作为标准输入 & & command &&m 把把标准输出重定向到文件描述符m中 & & command &&- 把关闭标准输入重定向的几个注意点:重定向中为保护原来的文件不被覆盖可以用 set -o noclobber 命令来限制用 set +o noclobber来取消限制,如果不取消的话也可以强制重定向 & & command &| file & & cat file 会清空file中的内容,因为shell会先清空stdout和stderr的管道。 & & &cat &file会造成死循环,因为它是一行行读出来的,永远都没有结束符9.合并标准输出和标准错误合并标准输出和标准错误的时候,切记shell是用左至右分析相应的命令举例说明:grep &hi& test.txt &test.out 2&&1 标准输出和错误输出都输入到标准输出中10.使用文件描述符举例说明: & & exec 3&&0 0&name.txt & //设置3为标准输入 name.txt的内容输入到标准输入此时的exec不会清除环境变量,也不会重新登录,覆盖当前的sehll &脚本:判断一个数的奇偶性#!/bin/bash#jiou.shi=$[$1 % 2 ]echo $iiftest$i -eq 0 ;thenecho oushuelseechojishufi脚本:判断两个数的大小#!\\bin\\bashecho -n&a=&read aecho -n &b=&read b#let &c=$a -$b&c=`expr $a - $b`if [ $c -eq 0 ];thenecho &a=b&elif [ $c -lt 0 ];thenecho &aelseecho &a&b&fi的测试语句有哪些,各是怎样实现的?整数测试运算test int1 -eq int2: 判断两个数是否相等test int1 -ne int2: 判断两个数是否不相等test int1 -gt int2: 判断整数1是否大于整数2test int1 -ge int2: 判断整数1是否大于等于整数2test int1 -lt int2:判断整数1是否小于整数2test int1 -le int2:判断整数1是否小于等于整数2整数测试也可以使用 let 命令或双圆括号相关操作为:== 、!=、&、&= 、&、&=&&字符串测试运算test -z string: 判断字符串长度是否为0,即判断字符串是否为空,为空返回真,非空返回假test -n string: 判断字符串长度是否不为0,即判断字符串是否非空,为空返回假,非空返回真test str1 =str2:判断两个字符串是否相等test str1!=str2:判断两个字符串是否不等文件测试运算test -r filename:判断用户对文件filename是否有读权限test -w filename: 判断用户对文件filename是否有写权限test -x filename:判断用户对文件filename是否有可执行权限test -f filename: 判断文件filename是否为普通文件test -d filename: 判断文件filename是否为目录test -c filename: 判断文件filename是否为字符设备test -b filename: 判断文件filename是否为块设备test -s filename: 判断文件filename是否大小不为0test -t fnum:判断与文件描述符fnum(默认值为1)相关的设备是否是一个终端设备逻辑运算test 表达式1-a 表达式2:与(and)逻辑判断。如果两个表达式同时为真则返回真,否者返回假。test 表达式1-o 表达式2:或(or)逻辑判断。只要两个表达式有一个为真则返回真,否则返回假。的循环控制语句有哪些?其语法格式分别是什么?在shell脚本中进行条件控制1.1 Bash 中允许测试两种类型的条件:命令成功或失败,表达式为真或假1.2任何一种测试中,都要有退出状态(返回值),退出状态为 0表示命令成功或表达式为真,非0 则表示命令失败或表达式为假。1.3状态变量$? 中保存命令退出状态的值if表达式有:if[ 条件表达式1]thenif [ 条件表达式2]then……else……fi命令串;else命令串;fi注意:上述if语法中,中括号“[]”中的内容用于进行条件测试。使用”[]“进行条件测试时,要注意空格的使用。在if与”[“间要有空格,在”[“与后面的条件表达式之间要有空格,在”]“与前面的条件表达式之间也要有空格。还有另外一种:ifexpr1# 如果expr1 为真(返回值为0)then# 那么commands1# 执行语句块commands1elifexpr2# 若expr1 不真,而expr2为真then# 那么commands2# 执行语句块commands2... ...# 可以有多个elif 语句else#else 最多只能有一个commands4# 执行语句块commands4fi# if 语句必须以单词 fi 终止1.elif可以有任意多个(0 个或多个)2.else最多只能有一个(0 个或1 个)3.if语句必须以 fi 表示结束4.expr通常为条件测试表达式;也可以是多个命令,以最后一个命令的退出状态为条件值。5.commands为可执行语句块,如果为空,需使用 shell 提供的空命令 “ : ”,即冒号。该命令不做任何事情,只返回一个退出状态 06.if语句可以嵌套使用,如:ex4if.sh,chkperm.sh,chkperm2.sh,name_grep,tellme,tellme2,idcheck.sh使用case语句有:casestring instr1)命令串1;;#执行语句块命令,注意后面为“;;”双分号str2)命令串2;;*)默认处理命令串;esac# esac实际上就是case反过来写case详解:caseexpr in# expr 为表达式,关键词 in 不要忘!pattern1)# 若expr 与 pattern1 匹配,注意括号commands1# 执行语句块commands1;;# 跳出 case 结构pattern2)# 若expr 与 pattern2 匹配commands2#执行语句块 commands2;;# 跳出 case 结构... ...# 可以有任意多个模式匹配*)# 若 expr 与上面的模式都不匹配commands# 执行语句块 commands;;# 跳出 case 结构,为两个双分号esac# case语句必须以 esac 终止1.表达式 expr 按顺序匹配每个模式,一旦有一个模式匹配成功,则执行该模式后面的所有命令,然后退出 case。2.如果 expr 没有找到匹配的模式,则执行缺省值 “ *) ” 后面的命令块 ( 类似于if中的else ); “ *) ” 可以不出现。3.所给的匹配模式 pattern 中可以含有通配符和“ | ”。4.每个命令块的最后必须有一个双分号,可以独占一行,或放在最后一个命令的后面。5.一般来说,在条件判断中,ifthen……[else]……if,(else可以不要),是成对出现的,也是遵循C语言中if的就近原则,即else、fi都是与其最近相邻的if配对的。对于case,也是类似C语言中的switch语句,参照switch理解,每一个case一定有一个esac与之配对。2. 在shell脚本中进行for循环for的第一种形式:forvar in list do命令串donelist: 列表,可以是由空格分隔的变量($a $b)或者是值(1 2 3等)。对于list中的每一项,都将循环一次var : 每次循环的值。对于list中的每一项都要进行一次循环,而每次循环时,就取出list中的第几项放在var中,可以在命令串中通过$var的方式进行引用循环执行过程:执行第一轮循环时,将 list 中的第一个词赋给循环变量,并把该词从 list 中删除,然后进入循环体,执行 do 和 done 之间的命令。下一次进入循环体时,则将第二个词赋给循环变量,并把该词从 list 中删除,再往后的循环也以此类推。当 list 中的词全部被移走后,循环就结束了。for的第二种形式:for var do命令串done与第一种方式相比,少了in list项。此时,for循环省略了list,list值由当前脚本程序的命令行参数代替。也就是说,在这种情况下,没循环一次,var中存储的就是一个命令行参数。对于for语句,我的理解是,如果没有in list,则循环参数则由命令行带参使用,即以命令行参数为for循环值列表。3. 在shell脚本中进行while循环在某些情况下,需要依据某个条件进行判断,如果条件为真则继续循环,否则结束循环,这种情况下,就需要使用while循环。while循环是当某个判定条件的值为假时退出循环。语法如下:while条件表达式do命令串;done执行过程:先执行条件表达式,如果其退出状态为 0,就执行循环体。执行到关键字 done 后,回到循环的顶部,while 命令再次检查条件表达式的退出状态。以此类推,循环将一直继续下去,直到条件表达式的退出状态非 0 为止。4. 在shell脚本中使用util循环util循环和while循环实现的功能基本相同,不过util是判定条件为假时才继续循环。语法如下:util条件表达式do命令行;doneshell脚本,实现1+2+3+……+99+100#!/bin/bashi=1sum=0while [ $i Cle 100 ]do sum=$[$sum+$i]i=$[$i+1]这里使用while控制,还有util和for循环,大体结构相似,具体的只需要系那个下面修改即可:for i in [1~100]util [$i-gt100]操作系统为什么有强大的网络管理功能?Linux本身就是一个网络操作系统,它和互联网诞生于同一个年代。可以说,正因为有了互联网,才使linux的普及变成现实。Linux具有Unix的优点:稳定、可靠、安全,有强大的网络功能。在相关软件的支持下,可实现WWW、FTP、DNS、DHCP、E-mail等服务,还可作为路由器使用,利用ipchains/iptables可构建NAT及功能全面的防火墙。IP地址,IPv4地址有哪些类型?所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。按照TCP/IP协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节。例如一个采用二进制形式的IP地址是“”,这么长的地址,人们处理起来也太费劲了。为了方便人们的使用,IP地址经常被写成十进制的形式,中间使用符号“.”分开不同的字节。于是,上面的IP地址可以表示为“10.0.0.1”。IP地址的这种表示法叫做“点分十进制表示法”,这显然比1和0容易记忆得多。IP地址有5类,A类到E类,各用在不同类型的网络中。地址分类反映了网络的大小以及数据包是单播还是组播的。A类到C类地址用于单点编址方法,但每一类代表着不同的网络大小。A类地址(1.0.0.0-126.255.255.255)用于最大型的网络,该网络的节点数可达16,777,216个。B类地址(128.0.0.0-191.255.255.255)用于中型网络,节点数可达65,536个。C类地址(192.0.0.0-223.255.255.255)用于256个节点以下的小型网络单点网络通信。D类地址并不反映网络的大小,只是用于组播,用来指定所分配的接收组播的节点组,这个节点组由组播订阅成员组成。D类地址的范围为224.0.0.0-239.255.255.255。E类(240.0.0.0-255.255.255.254)地址用于试验。域名就是上网单位的名称,是一个通过计算机登上网络的单位在该网中的地址。一个公司如果希望在网络上建立自己的主页,就必须取得一个域名,域名也是由若干部分组成,包括数字和字母。通过该地址,人们可以在网络上找到所需的详细资料。域名是上网单位和个人在网络上的重要标识,起着识别作用,便于他人识别和检索某一企业、组织或个人的信息资源,从而更好地实现网络上的资源共享。除了识别功能外,在虚拟环境下,域名还可以起到引导、宣传、代表等作用。通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。路由:是指路由器从一个接口上收到数据包,根据数据包的目的进行定向并转发到另一个接口的过程网关:是指一个网络连接到另一个网络的“关口”。也就是网络关卡。又称网间连接器、协议转换器。端口:在网络技术中,端口(Port)有好几种意思。集线器、交换机、路由器的端口指的是连接其他网络设备的接口,如RJ-45端口、Serial端口等。我们这里所指的端口不是指物理意义上的端口,而是特指TCP/IP协议中的端口,是逻辑意义上的端口。网卡:计算机与外界局域网的连接是通过主机箱内插入一块网络接口板(或者是在笔记本电脑中插入一块PCMCIA卡)。网络接口板又称为通信适配器或网络适配器(network adapter)或网络接口卡NIC(NetworkInterface Card)但是现在更多的人愿意使用更为简单的名称“网卡”。1.ping命令。用于测试当前系统的网络是否连通ping[选项]目标主机名或IP地址常用的参数及含义如下表所示。参数含义-c packet_count指定ping命令发送数据包的个数-i interval指定每个数据包发送的时间间隔-f快速发送指定数量的数据包,然后查看统计结果-l packet_count快速发送指定个数内的数据包-s b_count设定数据包的大小,默认为64字节-t ttl_time设置存活数值TTL的大小-R记录数据包的路由信息2. traceroute命令该命令向目的主机发送数据包,每经过一个网关或路由就返回一行信息,内容包括网络或路由的主机名或IP地址、每次经过该网关或路由的时间(单位为ms)。系统默认的数据包长度为38字节,最大跳数(Hop)为30次。traceroute[选项]目的主机名或IP地址常用的参数及含义如表所示。参数含义-f first_ttl设置第一个检测数据包的存活时间TTL - g gateway_ip设置数据包经过的网关,最多可设置8个-m max_ttl设置检测数据包的最大存活时间TTL -n ip_addr直接使用目的主机的IP地址-p port指定UDP协议使用的端口-w timeout设置等待远端主机回应的时间-x开启数据包的正确性检验3. netstat命令netstat命令用于查看网络连接、路由表信息和网络接口的状态信息,其格式如下:nestat[选项]参数含义-a显示所有套接口,包括正在监听的-c每个1秒刷新一次结果,直到用户终止-i显示所有网络接口信息-l显示处于监听状态的套接口信息-n显示结果直接使用IP地址,而不使用域名-t显示TCP协议的连接状况-u显示UDP协议的连接状况-w显示RAW协议的连接状况-r显示当前核心路由表的信息-v显示命令执行过程linux网络信息需要用到的命令有哪些?怎样实现?1. ifconfig工具的使用该工具既可以用于查看网络接口的信息,也可以用于配置网络的TCP/IP参数,还可以用于启动和停用指定的网络接口。1) 查看网络接口信息ifconfig命令格式如下:ifconfig[网络接口设备名]其中网络接口设备名为可选参数,如果没有指定网络接口,ifconfig将返回系统所有的网络设备的TCP/IP参数,包括回环网络接口的信息,否则返回指定的接口参数。在终端命令提示符中输入如下命令,可以查看网络接口eth0的TCP/IP参数信息。2) 配置网络信息ifconfig工具可以配置系统中指定的网络接口的TCP/IP参数信息,其格式如下:ifconfig网络接口设备名IP地址[netmask网络掩码][broadcast广播地址]其中netmask部分和broadcast部分可以任选其一,因为从网络掩码和广播地址可以互相推算。上述命令可以用指定的IP地址和网络掩码来配置命令中指定的网络接口。3) 网络接口的启用和禁用当网络接口的配置更改以后往往需要重启网络接口,以应用新的配置。使用ifconfig工具可以完成启用和禁用指定的网络接口的工作,具体方法如下:ifconfig网络接口设备名[up|down]其中参数up表示启用指定的网络接口,参数down表示禁用指定的网络接口。此外还可以使用network命令和ifup/ifdown命令来完成网络接口的启用和禁用。参数含义start启动所有网络接口stop禁用所有网络接口restart重启网络其中,network是一个shell脚本程序,用于启用、禁用或重启所有网络接口,其格式如下:/etc/rc.d/init.d/network[选项]常用的参数及含义如右表所示。ifup和ifdown命令分别用启用和禁用指定的网络接口,其格式如下:ifup网络接口设备名ifdown网络接口设备名2. route工具的使用使用ifconfig工具配置了网络接口的IP地址、网络掩码等参数后,该主机就可以在局域网络内和其他主机通信了,但是还不能访问外网的主机。此时需要使用route工具配置网络的路由记录或默认网关。route工具可以用于查看当前的路由信息,也可以设置网络的默认路由信息。1) 查看路由信息route命令在不带任何信息时,系统将返回当前路由表的信息,2) 添加/删除路由记录使用route命令添加或删除一条到达目标网络的路由记录,其格式如下:routeadd|del-net网络地址netmask网络掩码[gw网关地址][dev网络接口]其中参数add表示向路由表中添加一条路由信息,del表示删除路由表中的一条路由信息。gw参数和dev参数任选其一。gw参数用于指定网关地址,dev参数用于指定到达目标地址时数据分组投递的网络接口。使用router命令添加或删除一条到达目标主机的路由记录,其格式如下:routeadd|del-hostIP地址[gw网关地址][dev网络接口]在该命令中无需网络掩码,其中add参数、del参数、gw参数和dev参数含义同上。3) 添加/ 删除默认网关默认网关通常是一个公司或单位内部网络与外部网络通信的唯一通路,当公司内部网络上的主机与外部网络进行连接时,就将数据分组发给默认网关,由该网关负责数据分组的路由选择。可以使用route命令来添加或删除网络中的默认网关,其格式如下:routeadd|deldefaultgw 网关地址其中add参数、del参数、gw参数和dev参数含义同上。由route命令返回的最后一行可以看到默认网关添加成功。尽管ifconfig和route工具非常有效,但是它们的命令效果只能维持在命令执行到网络重启或系统重启的时限内,如果希望系统重启后ifconfig和route工具配置的参数仍然有效,可有以下的两个办法实现:(1)修改网络接口的配置文件(/etc/sysconfig/network-scripts/ifcfg-eth0文件)中的指定内容。这种方法可以同时解决网络重启和系统重启后网络配置失效的问题。这种方法将在下面的小节中给予介绍。(2)将相应的ifconfig和route配置命令,分别按行写入/etc/rc.d/rc.local文件。这种方法可以解决系统重启后ifconfig和route命令失效的问题,但是不能解决网络重启后ifconfig和route命令失效的问题。/etc/rc.d/rc.local文件是一个具有可执行属性的shell脚本文件,它在RedHat Linux 9系统启动时执行。通常,rc.local文件中的每一行都是一条命令,用于在系统启动时运行一个需要随系统一起运行的程序,类似于MS Windows的随机启动。用于网络性能检测的命令有哪些?可以检测到哪些信息?1、sar 命令行的常用格式sar [options] [-A] [-o file] t [n] 在命令行中,n 和t两个参数组合起来定义间隔和次数,t为采样间隔,是必须有的参数,n为采样次数,是可选的,默认值是1,-o file表示将命令结果以二进制格式存放在文件中,file 在此处不是,是文件名。options 为命令行选项。常用命令选项sar命令的选项很多,下面只列出常用选项:-A:所有报告的总和。-u:CPU利用率-v:进程、I节点、文件和锁表状态。-d:硬盘使用报告。-r:没有使用的内存页面和硬盘块。-g:串口I/O的情况。-b:缓冲区使用情况。-a:文件读写情况。-c:系统调用情况。-R:进程的活动情况。-y:终端设备活动情况。-w:系统交换活动。2、tcpdump采用命令行方式,它的命令格式为:tcpdump [-adeflnNOpqStvx ] [ -c 数量] [ -F 文件名 ][ -i 网络接口 ] [ -r 文件名][ -s snaplen ][ -T 类型 ] [ -w 文件名] [ ]tcpdump的选项介绍-a  将和转变成名字;-d  将匹配信息包代码以人们能够理解汇编格式给出;-dd  将匹配信息包的代码以的格式给出;-ddd 将匹配信息包的代码以十进制的形式给出;-e  在输出行打印出数据链路层的头部信息;-f  将外部的Internet地址以数字的形式打印出来;-l  使输出变为缓冲行形式;-n  不把成名字;-t  在输出的每一行不打印;-v  输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;-vv  输出详细的报文信息;-c  在收到指定的包的数目后,tcpdump就会停止;-F  从指定的文件中读取表达式,忽略其它的表达式;-i  指定监听的网络接口;-r  从指定的文件中读取包(这些包一般通过-w选项产生);-w  直接将包写入文件中,并不分析和打印出来;-T  将监听到的包直接解释为指定的类型的,常见的类型有rpc (远程过程调用)和snmp(简单 网络管理协议)1.ping 查看主机网络接口状态2. ifconfig 查看和更改网络接口的地址和参数(IP地址,子网掩码,网关等),也可以通过配置文件来查看或者更改,(/etc/sysconfig/network-script/ifcfg-eth0)3. netstat 检查整个网络4.route查看或者修改路由表5.nslookup 查询一台机器的IP地址和其对应的域名6. 其他测试连接的命令有ftp,ssh,telnet等7.dmesg| grep -i eth 获取网络适配器列表信息8. ethtool查询及设置以太网卡参数(全双共/半双共,连接速度等)9. mii-tool查看网卡的接连状态,是否连接网络安全是指网络系统的、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,不中断。网络安全从其本质上来讲就是网络上的。从广义来说,凡是涉及到网络上信息的、、、和可控性的相关技术和理论都是网络安全的研究领域操作系统的网络安全用到哪些技术手段?在linux下的网络安全用到了以下手段:1、用户管理,即口令控制 2、文件系统的权限控制3、日志文件系统 & 4、防病毒软件 & 5、防火墙本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)}

我要回帖

更多关于 linux shell case in 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信