免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2965 | 回复: 7
打印 上一主题 下一主题

急!关于SHELL中表达式结果的实现! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-10 10:06 |显示全部楼层 |倒序浏览
请问,shell中如何实现,比如参数sum=(a>b)&&(a>c)||(d<e),这里的表达式可能有多个参数,
比如:sum=(a>b)&&(a>c)
或者:sum=(a>b)||(d<e)
或者:sum=(a>b)&&(a>c)||(d<e)&&(e<f)
想了半天,像sql语句中这个也没办法实现,不知道该怎么弄了?不管后面的表达式怎么复杂,我只需要得到结果,不知哪位有没有好的办法?

论坛徽章:
0
2 [报告]
发表于 2008-08-10 10:47 |显示全部楼层
原帖由 爱知 于 2008-8-10 10:42 发表
试试
((...))



能否说的详细点?能举个例子吗?

论坛徽章:
0
3 [报告]
发表于 2008-08-10 11:11 |显示全部楼层
原帖由 爱知 于 2008-8-10 10:51 发表
sum=$(( (a>b)&&(a>c) ))


是这样吗?
a=6
b=4
c=8
sum=$(($a>$b)&&($a>$c))
echo $sum

运行没通过,是不是哪里有问题,请指教?

论坛徽章:
0
4 [报告]
发表于 2008-08-10 11:58 |显示全部楼层
原帖由 爱知 于 2008-8-10 11:18 发表
按原式写
sum=$(( (a>b)&&(a>c) ))
echo $sum


另外再请问一下,SHELL中strcmp($a,$b)如何实现啊?谢谢!

论坛徽章:
0
5 [报告]
发表于 2008-08-11 08:24 |显示全部楼层
原帖由 ly5066113 于 2008-8-10 16:09 发表


啥意思?
表达式的结果就是0或1。


你说的没错,最终的结果要么是0,要么是1。现在主要的问题就是表达式不确定,它可以包含许多比较符,比如:>=,>,<=,<,==,!=。说的更加通俗一点就是有整形,浮点型,字符串型数据的比较。不知道有什么好的建议?期待中。。。

论坛徽章:
0
6 [报告]
发表于 2008-08-11 08:25 |显示全部楼层
原帖由 爱知 于 2008-8-10 15:08 发表

[ "$a" = "$b" ]



我想通过表达式作为入参,这样子估计不行吧?

论坛徽章:
0
7 [报告]
发表于 2008-08-11 10:59 |显示全部楼层
原帖由 ly5066113 于 2008-8-11 09:02 发表


那就用awk吧,shell本身处理不了浮点型。



awk,呵呵,不是蛮懂,如果表达式是sum=(a>b)&&(e<=f)||(strcmp(g,h))&&(m<n)||(p>=w)||(t==r)||(k!=x),
其中a=4,b=3,e=6.51,f=3.47,g="123",h="456",m=8,n=9,p=6,w=7,t=5,r=4,k=3,x=2
这个怎么弄啊?

论坛徽章:
0
8 [报告]
发表于 2008-08-12 16:39 |显示全部楼层
原帖由 eeeef 于 2008-8-11 15:30 发表
用C,更符号LZ的要求



问一个比较简单的问题:shell里面怎么把得到的值返回?
比如test.sh的代码:
result=$((($1)))
echo $result

我在执行test.sh 9>6之后,想把得到的值:1通过C代码里面调用这个shell得到,C代码里面咋弄啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP