欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    Linux shell 逻辑运算符 逻辑表达式详解.docx

    • 资源ID:1426384       资源大小:28.95KB        全文页数:12页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Linux shell 逻辑运算符 逻辑表达式详解.docx

    shell的逻辑运算符涉及有以下几种类型,因此只要适当选择,可以解决我们很多复杂的判断,达到事半功倍效果。一、逻辑运算符1、逻辑卷标表示意思1)关于档案与目录的侦测逻辑卷标f常用!侦测档案是否存在eg:ifffilenamed常用!侦测目录是否存在b侦测是否为一个block档案c侦测是否为一个character档案S侦测是否为一个socket标签档案1.侦测是否为一个ITsymbolicIink的档案e侦测某个东西是否存在!2)关于程序的逻辑卷标G侦测是否由GID所执行的程序所拥有0侦测是否由UID所执行的程序所拥有P侦测是否为程序间传送信息的namepipe或是FIFo(老实说,这个不太懂!)3)关于档案的属性侦测r侦测是否为可读的属性W侦测是否为可以写入的属性X侦测是否为可执行的属性S侦测是否为非空白档案U侦测是否具有FSUlDj的属性g侦测是否具有FSGlDj的属性k侦测是否具有stickybit的属性4)两个档案之间的判断与比较;Wtestfilelntfile21nt第一个档案比第二个档案新ot第一个档案比第二个档案旧ef第一个档案与第二个档案为同一个档案(link之类的档案)5)逻辑的和(and)J或(Or)J&&逻辑的AND的意思Il逻辑的OR的意思2、运算符号代表意义二等于应用于:整型或字符串比较如果在U中,只能是字符串!二不等于应用于:整型或字符串比较如果在口中,只能是字符串V小于应用于:整型比较在中,不能使用表示字符串大于应用于:整型比较在U中,不能使用表示字符串eq等于应用于:整型比较ne不等于应用于:整型比较It小于应用于:整型比较gt大于应用于:整型比较Ie小于或等于应用于:整型比较ge大于或等于应用于:整型比较a双方都成立(and)逻辑表达式-a逻辑表达式0单方成立(or)逻辑表达式-0逻辑表达式Z空字符串n非空字符串二、逻辑表达式1、test命令使用方法:testEXPRESSION如:lrootlocalhost-l#test1=1&&echo'ok'okIroOtloCaIhoSt#testd/etc/&&echo'ok'oklrootlocalhost-#test1eq1&&echo'ok'oklrootlocalhost-#iftest1=1henecho,okfiok注意:所有字符与逻辑运算符直接用“空格”分开,不能连到一起。2、精简表达式U表达式lrootlocalhost|#l1eq1&&echo'ok'okrootk>CaIhOSV1&&echo'ok'bash:2:Nosuchfileordirectoryrootlocalhost#2<1<fe<feecho,ok,lrootlocalhost-#l2gt1a31t4&&echo*ok'okrootlocalhost-#2gtl&&31t4&&echo'ok'bash:missing''注意:在口表达式中,常见的>,<需要加转义字符,表示字符串大小比较,以acill码位邕作为比较。不直接支持<>运算符,还有逻辑运算符|&&它需要用aandj-oor表示表达式rootlocalhost-#1eq1&&echo'ok'okrootlocalhost-$2<3(fe(feecho,ok,okIrOotloCaIhOSt$U2v3&&4>5&&echo'ok'ok注意:山运算符只是口运算符的扩充。能够支持v,>符号运算不需要转义符,它还是以字符串比较大小。里面支持逻辑运算符:|&&3、性能比较bash的条件表达式中有三个几乎等效的符号和命令:test,和川。通常,大家习惯用if;then这样的形式。而山的出现,根据ABS所说,是为了兼容><之类的运算符。以下是比较它们性能,发现是最快的。Stime(formin1.1(XXXX);dotestd.;done;)realm.658suserm.558ssys0m0.100sStime(formin1.1OOOOO;dod.;done;)rea10m0.609suserm.524ssys0m0.085sStime(fo11nin1.100000;dod.;done;)realm.311suserm.275ssys0m0.036s不考虑对低版本bash和对Sh的兼容的情况下,用川是兼容性强,而且性能比较快,在做条件运算时候,可以使用该运算符。附1.inuxShell脚本总结及语法速查1.HelloWorld1.1. 基本结构创建helloWorld.sh文件,写入如下内容:#!/bin/bashechonhelloworldM其中#!告诉系统其后路径所指定的程序是解释此脚本文件的Shell程序,常见的Shell程序有以下几类(可通过命令cat/etc/shells查看):BourneShell(usrbinsh或/bin/Sh)BourneAgainShell(binbash)CShell(usrbincsh)KShell(usrbinksh)ShellforRoot(sbinsh)Others其中Bash在日常工作中被广泛使用,同时也是大多数1.inux系统默认的Shello执行该Sh脚本#增加可执行权限÷chmodu+xhelloWorld.sh#运行脚本-÷.helloWorld.sh或-÷shhellowWorld.sh1.2. 注释单行注释以#开头的行是注释多行注释方式一:用一对括起来,定义成一个函数,没有地方调用即达到注释的效果。方式二::«EOF注释内容注释内容.注释内容EOF2.基本语法2.1. 变量变量定义如下示例:VARl="whoru,VAR2=100var3=datawwwvar4-name=11root"变量名建议大写;有效字符仅能包含字母、数字、下划线,首个字符不能以数字开头;=两边不能有空格;不能使用标点符号;不能使用bash里的关键字(可用help命令查看保留关键字)。访问变量$VARl或$(Var1),其中,加花括号是为了帮助解释器识别变量的边界。设置变量只读readonlyVARl删除变量(不适用于只读变量!)UnsetVARl22字符串值用双引号”或单引号”表示双引号里可以有变量;双引号里可以出现转义字符;单引号里的任何字符都会原样输出;单引号字符串中的变量是无效的;单引号单限制:双引号的优点:其它# 字符串拼接name=',xiaoli"var2="hello,H$name#出hello,xiaoli# 获取字符串长度string="abcd"echo$#String#输出4# 提取子字符串msg=11zhangsanisagoodman"echo$msg:l:4#输出hang2.3. 数组bash支持一维数组(不支持多维数组),并且没有限定数组的大小。数组元素的下标由O开始,获取数组元素要用到下标。定义:array1=(valuevalueIValUe2value3)或array20=value0array2l=valuelarray22=value2读取#指定下标的元素echo$array2l2);/输出value2#获取数组所有元素echo$array2*;/输出ValueOvalue1value2echo$array2J)获取数组元素个数0(±0$#%丫2;输出3echo$#array2l*J);取得数组中指定下标元素的字符长度echo$(#array22;2.4. 传递参薮在执行SheII脚本时,可以向脚本传递参数,脚本内获取参数的格式为$n,这里的n指传递给脚本的第n个参数。如下脚本文件demo.sh:#!/bin/bashecho”执行的文件名:$0”;echo”第一个参数为:$1”;echo”第二个参数为:$2”;echo”第三个参数为:$3”;执行该文件,并传递参数,如下:-÷.demo3.shparam1param2param3执行的文件玄:.demo3.sh第一个参数为:param1第二个参数为:param2第三个参数为:param3其中,$0是一个特殊变量,代表当前脚本文件名,还有几个类似的变量如下:变量说明$#传递给脚本的参数个数。以一个单字符串的形式显示所有向脚本传递的'参数,如"$l$2.$n"与$*相同,但是使用引号把每个参数包裹起来,箱最后一个执行的命令的退出状态:0正常;1或卜其它任何值,表示有错误$脚本运行的当前进程ID号$!最后一个后台命令的进程号。3 .运算符3.1. 算数运算符原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如awk和expr,其中expr最常用。假定有两个变量:a=10b=20运算符说明举例+加法'expr$a+$b、结果为30。减法'expr$a$b'结果为IO0*乘法'expr$a*$b'结果为200o/除法'expr$b/$a'结果为2。取余'expr$b$a'结果为Oo赋值a=$b将把变量b的值赋给a。=用于比较两个数字是否相同$a=$b返回falseoI=用于比较两个数字是否不相同$a!=$b返回true。注意:表达式和运算符之间要有空格,如2+2是错误的,必须写成2+2;完整的表达式要被反引号、包裹起来;3.2. 关系运算符关系运算符只支持数字,不支持字符串,除非字符串的值是数字。假定有两个变量:a=10b=20运算符说明举例eqnegtIt检测两个数是否相等检测两个数是否不相等检测左边的数是否大于右边的检测左边的数是否小于右边的$aeq$b返回falseo$ane$b返回true。返回true。geIe检测左边的数是否大于等于右边的检测左边的数是否小于等于右边的$age$b返回falseo3.3. 布尔操作符假定有两个变量:a=10b=20举例运算符说明!false返回true。非运算,表达式为true则返回false,否则返回trueo或运算,有一个表达式为$alt20o$bgtl00返回true则返回trueotrue。与运算,两个表达式都为$alt20a$bgtl00返回true才返回true。false©3.4.逻辑运算符假定有两个变量:a=10b=20运算符说明举例逻辑&&的altl(M)&&ANDbgtlOO返回false逻辑的ORa-ltlOObgtlOO返回true3.5.字符串运算符假定有两个变量:a="abc"b="efg”运算符说明检测两个字符串是否相等检测两个字符串是否不相等检测字符串长度是否为O(空)检测字符串长度是否不为O(非空)举例$a=$b返回falseo$a!=$b返回trueoz$a返回falseostr贽字符串是否为不为阿返回噜3.6.文件测试运算符运算符说明(如果是,则返回true)举例b检测文件是否是块设备文件bSfileC检测文件是否是字符设备文件c$filed检测文件是否是目录d$filef检测文件是否是普通文件(既不是目录,也不是设备文件)f$fileg检测文件是否设置了SGlD位g$filek检测文件是否设置了粘着位(StiCkyBit)k$file返回true。P检测文件是否是有名管道p$fileU检测文件是否设置了SUlD位u$filer检测文件是否可读r$fileW检测文件是否可写w$fileX检测文件是否可执行x$fileS检测文件是否为非空(文件大小是否大于0)文件s$filee检测文件(包括目录)是否存在eSfile4 .流程控制5 .1.if语句大多使用关系运算符检查关系#语法格式ifconditionIthenCommandl.elifcondition2thencommand2elseCommandNfi4.2.case语句#语法格式case值in模式1)command1command2.CommandN;模式2)command1command2.CommandN;*)CommandDefaUlt;esac4.3.while语句用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式为:#语法格式whileconditiondocommanddone1.4. until循环执行一系列命令直至条件为true时停止,它与while循环在处理方式上刚好相反。#语法格式Untilconditiondocommanddone1.5. for循环#语法格式forvarinitemlitem2.itemNdocommand1command2CommandNdone1.6. 无限循环# 语法1while:docommanddone# 语法2whiletruedocommanddone# 语法3for(;)1.7. 退出循环break跳出整个循环,执行循环体后面的代码,支持breakn退出多层嵌套循continue结束当前循环,同样支持Continuen退出多层5 .输入、输出重定向5.1. 命令列表命令说明command>file将输出结果重定向到file。command<file将输入重定向到file。command>>file将输出以追加的方式重定向到file。n>file将文件描述符为n的文件重定向到file0n>>file将文件描述符为n的文件以追加的方式重定向到file。n>&m将输出文件m和n合并。n<&m将输入文件m和n合并。将开始标记tag和结束标记tag之间的内容g作为输入。关于文件描述符:O通常是标准输入(STDIN),UniX程序默认从Stdin读取数据。1标准输出(STDOUT),UniX程序默认向StdoUt输出数据。2标准错误输出(STDERR),UniX程序会向Stderr流中写入错误信息。示例:#将stdout和stderr合并后重定向到file->command>file2>&15.2. devnull文件这是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,也什么也读不到。我们通常将命令的输出重定向到它,起到“禁止输出”的效果。如:#屏蔽StdoUt和stderr->command>/dev/null2>&15.3. Here文档#将两个delimiter之间的内容(document)作为输入传递给commandocommand<<delimiterdocumentdelimiter说明:结尾的delimiter一定要顶格写,前面不能有任何字符,后面也不能有任何字符,包括空格和tab缩进。开始的delimiter前后的空格会被忽略掉。6 .函数6.1. 基本语法functionfuncName()command;retumint;)说明:function关键字非必须;如果该函数不传入变量,这函数名的后面的括号可以不加;return非必须;默认返回最后一条命令的执行结果;调用函数仅使用其函数名,如funcName;所有函数在使用前必须定义,即函数调用必须要在函数声明之后。6.2. 函数参数func()echo”第一个参数为$1!”echo”第二个参数为$2!”.echo”第十个参数为$为!”.#调用并传参funcparam1param2param3说明:在函数体内部,通过$n的形式来获取参数的值,例如:1表示第一个参数,2表示第二个参数;当n>=10时,需要使用$n来获取参数。7 .其它7.1. .echo命令用于字符串的输出,基本格式echostring。使用示例:#显示普通字符echo"Itisatest”#输出Itisatest#显示转义字符echo”'"ItiSatest""#输出nItisatest"#显示变量#!/bin/shNAME=nXiaomingnecho"$NAMEltiSatest”#输出Xiaomingisatest#显示换行echoe"OK!n11e开启转义echo"Itisatest"# 显示不换行echoe"OK!cue开启转义c不换行echo"Itisatest"# 显示结果定向至文件echouItisatest">myfile# 显示命令执行结果echo'date'7.2. .printf命令模仿C程序库(library)里的Printf()程序,主要用于格式化输出。默认printf不会像echo自动添加换行符,我们可以手动添加n。其基本语法格式为:printffonnatstringarguments.说明:formatstring为格式控制字符串arguments为参数列表。示例:TPrintfnloS8s4sn”姓名性别体重kgTPrintF'10s8s4.2fn”郭靖男66.1234TPrintF'10s8s4.2fn”杨过男48.6543TPrintF'10s8s4.2fn”郭芙女47.9876姓名性别体重kg郭靖男66.12杨过男48.65郭芙女47.99其中:SCdf都是格式替代符;IOS指一个宽度为10个字符(表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。4.2f指格式化为小数,其中.2指保留2位小数。更多使用示例:#没有引号也可以输出TPrintfSabCdef#格式只指定了一个参数,但多出的参数仍然会按照该格式输出,formatstring被重用-÷printfsabcdefabcdef-printf'sn,'abcdefabcdef#如果没有arguments,那么S用NU1.1.代替,d用O代替-÷printf,sanddn11and7.3. test命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试(详见第3节对应的运算符部分)。基本使用示例:cd/binifteste./bashthenecho,文件已存在Iecho1文件不存在!,fi7.4. 包含文件被包含的文件不需要可执行权限。#方式一.another-file.sh#方式二Sourceanotherfile.sh

    注意事项

    本文(Linux shell 逻辑运算符 逻辑表达式详解.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开