VimChina
发表于 2005-5-9 11:37:54
再问一个问题吧,我要在一个if里面判断
if [ "$TRAHIS" = "$TRAHISbak" ] AND [ "$HISBAL" = "$HISBALbak" ]; then
echo ok
fi
done
这个不是用AND吧?
而是-a还是什么?忘记了 :oops:
zhy2111314
发表于 2005-5-9 11:41:17
大多数时候,虽然可以不使用括起字符串和字符串变量的双引号,但这并不是好主意。为什么呢?因为如果环境变量中恰巧有一个空格或制表键,bash 将无法分辨,从而无法正常工作。这里有一个错误的比较示例:
if [ $myvar = "foo bar oni" ]
then
echo "yes"
fi
在上例中,如果 myvar 等于 "foo",则代码将按预想工作,不进行打印。但是,如果 myvar 等于 "foo bar oni",则代码将因以下错误失败:
[: too many arguments
在这种情况下,"$myvar"(等于 "foo bar oni")中的空格迷惑了 bash。bash 扩展 "$myvar" 之后,代码如下:
[ foo bar oni = "foo bar oni" ]
因为环境变量没放在双引号中,所以 bash 认为方括号中的自变量过多。可以用双引号将字符串自变量括起来消除该问题。请记住,如果养成将所有字符串自变量用双引号括起的习惯,将除去很多类似的编程错误。"foo bar oni" 比较 应该写成:
if [ "$myvar" = "foo bar oni" ]
then
echo "yes"
fi
erppro
发表于 2005-5-9 13:19:55
没有编译器,怎么用c嘛 :neutral:
什么系统会没有c编译器?python也没有?
atfa
发表于 2005-5-9 14:32:11
zhy2111314, 我现在遇到的问题是如何判断两个同时满足的条件,也就是C里面的&&怎样在shell里面实现?给点建议啦
啊,这个问题作废,我已经用两个if语句搞定。
VimChina
发表于 2005-5-9 15:04:00
zhy2111314, 我现在遇到的问题是如何判断两个同时满足的条件,也就是C里面的&&怎样在shell里面实现?给点建议啦
if [ "$TRAHIS" = "$TRAHISbak" -a "$HISBAL" = "$HISBALbak" ]; then
echo ok
fi
done
记不太清了,你试试吧
VimChina
发表于 2005-5-9 15:19:13
#!/usr/local/bin/bash
a=1
b=2
c=1
d=2
if [ "$a" = "$c" -a "$b" = "$d" ]
then
echo successful
else
echo faile
fi
FreeBSD-4.11-release && Bash-2.05b下测试通过
zhy2111314
发表于 2005-5-9 15:26:24
上面的这种方法可以吗?
VimChina
发表于 2005-5-9 15:55:17
我测试过了才敢帖上来的,测试环境:
FreeBSD-4.11-release && Bash-2.05b
zhy2111314
发表于 2005-5-9 16:25:31
呵呵,兄弟误解了,我问的是atfa :wink:
atfa
发表于 2005-5-9 16:32:42
zhy2111314,两个if语句写在一起当然可以实现这个要求……我觉得只要有一点编程基础都不难理解吧?
谢谢 VimChina, 我马上试一下
zhy2111314
发表于 2005-5-9 16:51:27
zhy2111314,两个if语句写在一起当然可以实现这个要求……我觉得只要有一点编程基础都不难理解吧?
谢谢 VimChina, 我马上试一下
我晕了,怪我没说清楚,兄弟又误解了,我是说VimChina说的方法在你那行吗? :roll::roll::roll:
MichaelBibby
发表于 2005-5-9 16:57:07
zhy2111314,:mrgreen:
zhy2111314
发表于 2005-5-9 17:46:40
zhy2111314,:mrgreen:
难得一见啊 :D
常回来看看啊 :wink:
atfa
发表于 2005-5-9 17:46:45
zhy2111314, vimchina的方法是可以的,这些是基本的unix规范,linux和aix应该都是完全一样的。
MichaelBibby
发表于 2005-5-9 17:50:27
zhy2111314,:mrgreen:
难得一见啊 :D
常回来看看啊 :wink:俺就是VimChina :mrgreen: