LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 902|回复: 7

问个if语句的问题

[复制链接]
发表于 2010-4-30 22:56:58 | 显示全部楼层 |阅读模式
各位高手,我在学习bash时与到了一个问题。
#!/bin/bash
ping -c 1 -t 255 192.168.1.1 > CARD_STATU
if [ -n "grep -i 'Network is unreachable' CARD_STATU" ] ; then
        echo "2"
else
        echo "1"
fi
这个代码中if 判断命令的返回时总是处理不好。就是不管CARD_STATU文件内容如何变化,总是输出2.我实在找不出原因了,希望能拉我一把,感激不尽!
发表于 2010-4-30 23:09:40 | 显示全部楼层
引号的问题
  1. ` ' "
复制代码
三种引号作用很不一样。
if ! grep -q -i 'Network is unreachable' CARD_STATU; then
..
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-30 23:22:49 | 显示全部楼层
现在的问题是if  不能判断 grep的返回值是否是空串,希望朋友指点迷津
回复 支持 反对

使用道具 举报

发表于 2010-5-1 00:39:03 | 显示全部楼层
这种写法[php]
if [ -n "grep -i 'Network is unreachable' CARD_STATU" ] ; then
[/php]
是在判断字符串"grep -i 'Network is unreachable' CARD_STATU"是否为非空(显然不为空),因此无法实现你的目标。
对于这种有返回字符串的,我还是建议初学的时候,分开写,这样不容易错:
[php]
str=$(grep -i 'Network is unreachable' CARD_STATU)
if [ -n "$str"]; then
echo 2
else
echo 1
fi
[/php]
易错点二楼也说了,包围grep命令的应该是键盘TAB键上的 ` 号而非双引号。
回复 支持 反对

使用道具 举报

发表于 2010-5-1 01:59:37 | 显示全部楼层
Post by turbo808;2086912

if [ -n "grep -i 'Network is unreachable' CARD_STATU" ] ; then
写成下面更好:
  1. if grep -i 'Network is unreachable' CARD_STATU > /dev/null; then
复制代码
回复 支持 反对

使用道具 举报

发表于 2010-5-1 09:08:36 | 显示全部楼层
Post by biinn;2086933
写成下面更好:

  1. if grep -i 'Network is unreachable' CARD_STATU > /dev/null; then
复制代码


楼主点明“要的是grep输出的字符串”。

而且你的做法还不如二楼的。grep有--quiet参数的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-1 09:42:34 | 显示全部楼层
Post by 沈觅仁;2086932
这种写法[php]
if [ -n "grep -i 'Network is unreachable' CARD_STATU" ] ; then
[/php]
是在判断字符串"grep -i 'Network is unreachable' CARD_STATU"是否为非空(显然不为空),因此无法实现你的目标。
对于这种有返回字符串的,我还是建议初学的时候,分开写,这样不容易错:
[php]
str=$(grep -i 'Network is unreachable' CARD_STATU)
if [ -n "$str"]; then
echo 2
else
echo 1
fi
[/php]
易错点二楼也说了,包围grep命令的应该是键盘TAB键上的 ` 号而非双引号。
谢谢你的回答,我改好了,在这个问题中我明白了空格在shell中的作用,十分感谢各位的回答
回复 支持 反对

使用道具 举报

发表于 2010-5-3 23:46:55 | 显示全部楼层
Post by 沈觅仁;2086965
楼主点明“要的是grep输出的字符串”。

而且你的做法还不如二楼的。grep有--quiet参数的。
不是每个版本都有 --quiet 参数的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表