shell同时满足两个的条件语句该怎么写?
这么写判断不成功是因为什么?while["${var}"!="${choice}"-a-z`grep^${choice}$1`]...
这么写判断不成功是因为什么?
while [ "${var}" != "${choice}" -a -z `grep ^${choice} $1` ] 展开
while [ "${var}" != "${choice}" -a -z `grep ^${choice} $1` ] 展开
4个回答
展开全部
判断逻辑是ok的,若grep出来为空则不存在任何问题。
只是,grep出来的有可能是多行内容,建议分开写,不要写在一行。
str=`grep ^${choice} $1`
while [ "${var}" != "${choice}" -a -z "$str" ]
先将grep的结果赋值给一个变量,然后变量放入双引号,判断是否为空。这样多行内容就不是问题。
或者,直接加个双引号也ok。
while [ "${var}" != "${choice}" -a -z "`grep ^${choice} $1`" ]
这样看起来有点闹心,毕竟不方便分段调试啊。
记住-z是用于判断字符串是否为空的,既然是字符串,任何时候都别忘记加双引号。
展开全部
用&&就可以。
while [ $a=10 ] && [ $b = 20 ] ; do echo "ok"; break; done
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
while ([ "${var}" != "${choice}" ] && [ -z `echo $1 | grep "^${choice}"` ])
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
and
&&
应该都可以
&&
应该都可以
更多追问追答
追问
看清楚,是shell
追答
sorry,&&单独在命令行上是可以的。
如果是bash里面是用-a
前面部分是字符串比较的话用 !=否则用 -ne表示数字比较
后面-z是判断是否是空串,即grep没有返回结果
自己再查查输入输出吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询