免费注册 查看新帖 |

Chinaunix

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

[文本处理] if判断条件 [复制链接]

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:54:45
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-12-30 14:15 |只看该作者 |倒序浏览
if [ $abc -gt 0 ]
这里的$abc变量我想用文件内容做判断就像下面
if [ `cat /tmp/x` -gt 0 ]
这样做不行,我想知道这种方法可行吗

之所以不用$abc这样的变量做判断是因为,export  $abc变量后子进程可以继承变量,但子进程修改完变量后没法返回给主进程继续使用(现在还不知道怎么实现),所以想用文件的方法当全局变量。

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
2 [报告]
发表于 2014-12-30 14:27 |只看该作者
本帖最后由 liion631818 于 2014-12-30 14:30 编辑

多写一步,先读文件到变量又不会死
  1. px@ubuntu:~/bash-script$ if [ `cat testfile` -gt 0 ]; then echo ok; fi      
  2. ok
复制代码

论坛徽章:
0
3 [报告]
发表于 2014-12-30 14:27 |只看该作者
yiguihuo 发表于 2014-12-30 14:15
if [ $abc -gt 0 ]
这里的$abc变量我想用文件内容做判断就像下面
if [ `cat /tmp/x` -gt 0 ]
为何不行?

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
4 [报告]
发表于 2014-12-30 14:31 |只看该作者
Looiml 发表于 2014-12-30 14:27
为何不行?
应该是木有文件x的时候出错

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:54:45
5 [报告]
发表于 2014-12-30 14:46 |只看该作者
勿喷,刚才是其他问题造成的错误,if [ `cat /tmp/x` -gt 0 ]这样是可以的,其实我很想知道有没有方法可以把shell生成的子进程中的变量,传到他原来的父进程中。(或者是改变父进程中的变量)

论坛徽章:
2
摩羯座
日期:2014-11-03 15:28:56卯兔
日期:2015-01-04 17:20:51
6 [报告]
发表于 2014-12-30 14:49 |只看该作者
回复 1# yiguihuo


    没看懂为啥报错,当然文件不存在,或者文件里面没有数据或者不是一行数字就另说了

   另外如果要这么做的话,我比较习惯写成
if [[ `head -1 /tmp/x 1>/dev/null 2>&1|sed 's/[^-0-9]//g'` > 0 ]]

论坛徽章:
7
申猴
日期:2014-12-21 13:57:24巳蛇
日期:2014-12-25 22:27:08申猴
日期:2015-01-19 08:07:36辰龙
日期:2015-02-04 11:40:06处女座
日期:2015-02-04 11:40:412015年亚洲杯之卡塔尔
日期:2015-03-06 12:01:322015年亚洲杯之乌兹别克斯坦
日期:2015-03-31 13:43:57
7 [报告]
发表于 2014-12-30 21:21 |只看该作者
可以用source调用子shell

论坛徽章:
0
8 [报告]
发表于 2015-01-01 18:14 |只看该作者
1.我之前猜测用`cat /file/x`来做判断是不可行的,理由是文本末尾其实有一个隐藏的换行符$,但是在CentOS5.5本人亲测是可以的。
2.您第二个问题,我觉得可以考虑一下用function来返回值。7楼的同学的方法也是可行的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP