QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: atfa

急寻脚本案例

[复制链接]
发表于 2005-5-9 11:37:54 | 显示全部楼层
[quote:617d35044d="atfa"]再问一个问题吧,我要在一个if里面判断
[code:1]
if [ "$TRAHIS" = "$TRAHISbak" ] AND [ "$HISBAL" = "$HISBALbak" ]; then
echo ok
fi
done
[/code:1]
[/quote]
这个不是用AND吧?
而是-a还是什么?忘记了
回复

使用道具 举报

发表于 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
回复

使用道具 举报

发表于 2005-5-9 13:19:55 | 显示全部楼层
[quote:d73fcea0fb="atfa"]没有编译器,怎么用c嘛 :neutral:[/quote]
什么系统会没有c编译器?python也没有?
回复

使用道具 举报

 楼主| 发表于 2005-5-9 14:32:11 | 显示全部楼层
zhy2111314, 我现在遇到的问题是如何判断两个同时满足的条件,也就是C里面的&&怎样在shell里面实现?给点建议啦

啊,这个问题作废,我已经用两个if语句搞定。
回复

使用道具 举报

发表于 2005-5-9 15:04:00 | 显示全部楼层
[quote:bb0c9fed15="atfa"]zhy2111314, 我现在遇到的问题是如何判断两个同时满足的条件,也就是C里面的&&怎样在shell里面实现?给点建议啦[/quote]
[code:1]
if [ "$TRAHIS" = "$TRAHISbak" -a "$HISBAL" = "$HISBALbak" ]; then
echo ok
fi
done[/code:1]
记不太清了,你试试吧
回复

使用道具 举报

发表于 2005-5-9 15:19:13 | 显示全部楼层
[code:1]
#!/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
[/code:1]
FreeBSD-4.11-release && Bash-2.05b下测试通过
回复

使用道具 举报

发表于 2005-5-9 15:26:24 | 显示全部楼层
上面的这种方法可以吗?
回复

使用道具 举报

发表于 2005-5-9 15:55:17 | 显示全部楼层
我测试过了才敢帖上来的,测试环境:
[code:1]FreeBSD-4.11-release && Bash-2.05b[/code:1]
回复

使用道具 举报

发表于 2005-5-9 16:25:31 | 显示全部楼层
呵呵,兄弟误解了,我问的是atfa
回复

使用道具 举报

 楼主| 发表于 2005-5-9 16:32:42 | 显示全部楼层
zhy2111314,  两个if语句写在一起当然可以实现这个要求……我觉得只要有一点编程基础都不难理解吧?

谢谢 VimChina, 我马上试一下
回复

使用道具 举报

发表于 2005-5-9 16:51:27 | 显示全部楼层
[quote:0e310096b4="atfa"]zhy2111314,  两个if语句写在一起当然可以实现这个要求……我觉得只要有一点编程基础都不难理解吧?

谢谢 VimChina, 我马上试一下[/quote]
我晕了,怪我没说清楚,兄弟又误解了,我是说VimChina说的方法在你那行吗?     
回复

使用道具 举报

发表于 2005-5-9 16:57:07 | 显示全部楼层
zhy2111314,  
回复

使用道具 举报

发表于 2005-5-9 17:46:40 | 显示全部楼层
[quote:b06624fcbb="MichaelBibby"]zhy2111314,  [/quote]
难得一见啊 :D
常回来看看啊
回复

使用道具 举报

 楼主| 发表于 2005-5-9 17:46:45 | 显示全部楼层
zhy2111314, vimchina的方法是可以的,这些是基本的unix规范,linux和aix应该都是完全一样的。
回复

使用道具 举报

发表于 2005-5-9 17:50:27 | 显示全部楼层
[quote:c504a1051c="zhy2111314"][quote:c504a1051c="MichaelBibby"]zhy2111314,  [/quote]
难得一见啊 :D
常回来看看啊 [/quote]俺就是VimChina
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-7-8 13:13 , Processed in 0.055555 second(s), 12 queries .

© 2021 Powered by Discuz! X3.5.

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