shell同时满足两个的条件语句该怎么写?

这么写判断不成功是因为什么?
while [ "${var}" != "${choice}" -a -z `grep ^${choice} $1` ]

判断逻辑是ok的,若grep出来为空则不存在任何问题。

只是,grep出来的有可能是多行内容,建议分开写,不要写在一行。

str=`grep ^${choice} $1`
while [ "${var}" != "${choice}" -a -z "$str" ]

先将grep的结果赋值给一个变量,然后变量放入双引号,判断是否为空。这样多行内容就不是问题。

或者,直接加个双引号也ok。

while [ "${var}" != "${choice}" -a -z "`grep ^${choice} $1`" ]

这样看起来有点闹心,毕竟不方便分段调试啊。

记住-z是用于判断字符串是否为空的,既然是字符串,任何时候都别忘记加双引号。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-15

用&&就可以。

while [ $a=10 ] && [ $b = 20 ] ; do echo "ok"; break; done

第2个回答  2013-11-15
while ([ "${var}" != "${choice}" ] && [ -z `echo $1 | grep "^${choice}"` ])
第3个回答  2013-11-15
and

&&

应该都可以追问

看清楚,是shell

追答

sorry,&&单独在命令行上是可以的。

如果是bash里面是用-a

前面部分是字符串比较的话用 !=否则用 -ne表示数字比较

后面-z是判断是否是空串,即grep没有返回结果

自己再查查输入输出吧

追问

分开写成两个while循环都没有问题,用-a连起合成一个条件来就不行了

追答

bash 有 --debug 方式执行脚本,你看看咋执行的,调试一下可能就有线索了

否则光看这句话也分析不出来

shell同时满足两个的条件语句该怎么写?
只是,grep出来的有可能是多行内容,建议分开写,不要写在一行。str=`grep ^${choice} $1`while [ "${var}" != "${choice}" -a -z "$str" ]先将grep的结果赋值给一个变量,然后变量放入双引号,判断是否为空。这样多行内容就不是问题。或者,直接加个双引号也ok。while [ "${var}"...

shell脚本中的if中多条件语句如何写。
可以使用 if-elif-else 语法来写多条件语句。1、首先要理解if-else的基本用法,if条件+then操作+else操作+fi闭合,书写方法如下:2、if -elif-else 语法的具体格式--if单条件多分支,书写方法如下:3、实例 - if单条件多分支,这个实例的输出结果是:a 小于 b。4、实例 - if多条件多分支,这个...

shell\/bash 两个变量的提取和判断,即:实现两个条件同时存在
awk -v RS="" '\/1234\/&&!\/qwer\/' file.txt你的这个例子,由于出现了qwer,所以输出为空。RS(记录分隔符)默认为换行符,但这里将所有文件内容作为一条记录来整体看待,以便判断是否含有要求的内容,所以清除了记录分隔符。

Linux | shell脚本-条件判断if和循环语句for
if 条件判断1;then 条件1成立操作...elif 条件判断2;then 条件2成立操作...else 其他条件不成立时操作...fi 以奖品分类为例,根据分数确定不同的奖项,输入范围在0-100分内,并包含奖品分类说明。所有条件均不成立时的特殊情况操作可以在此结构中包含。Shell循环结构语句分为for、while和until三种。

如何在 Shell 脚本中使用 If 语句 ?
if true, execute this block 120 < $1 && echo "$1 is less than 150"fi if-else 语句则允许根据条件执行不同的代码块:Syntax:if [ condition ]; then if true, execute this block else if condition is false, execute this block fi 更复杂的 if-elif-else 结构可以处理多个条件:Synt...

Linux | shell脚本-比较判断和运算语句
逻辑判断则通过`&&`或`||`实现,例如`[ 条件1 ] && [ 条件2 ]`表示两个条件都成立时执行,`[ 条件1 ] || [ 条件2 ]`表示只要一个条件成立就执行。在进行字符和变量的比较时,单引号和双引号有区别,双引号内会执行变量,而单引号则只是简单输出字符。接下来讨论shell运算语法。支持的运算符...

如何在UNIX Shell中使用if...else语句进行条件决策?
在编写UNIX Shell脚本时,面对需要根据条件执行不同操作的情况,条件语句显得尤为重要。其中,if...else语句是Shell提供的基础决策工具,它允许你在一系列选项中选择执行。其基本形式有三种:if...fi, if...else...fi, 和 if...elif...else...fi,通过关系运算符检查条件。这些运算符在前文已有...

Shell 脚本中的 if 条件判断
条件判断格式Shell提供了两种判断格式,一种是基础的if...else...,另一种则是简化的版本。判断语句的真假在Bash中通过变量类型和特殊变量$?来确定,0表示成功,非0表示失败。if语句示例单分支:用于执行单一操作,如检查文件是否存在双分支:通过逻辑运算符(如&&或||)结合两个条件多分支:使用嵌套if...

Shell 中的 if 与条件判断
在 Shell 脚本中,if 语句后面可加分号。分号作为命令分隔符,用于在同一行中分隔多个命令。例如:示例:此处,if 语句与 echo 命令在同一行,用分号分隔。然而,通常 if 语句独立于新行,后面命令则在下一行,分号一般不在 if 后使用。使用 test 进行条件判断:test 命令用于比较两个值,返回真或假...

shell脚本中“if”语法如何嵌套?
if语句的基本格式包括三种形式:1. **if条件判断**:通过使用条件表达式进行判断,如果条件成立,则执行紧跟其后的代码块。2. **else if条件判断**:用于处理多个条件场景。如果主if条件不成立,将检查else if部分,直至找到满足的条件。3. **else部分**:当所有条件都不满足时,执行else部分的代码。

相似回答