免费注册 查看新帖 |

Chinaunix

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

[]和[[]]的疑问? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-29 10:50 |只看该作者 |倒序浏览
[xfm@ubuntu:~]$ vi time.pm
  8                 case ${CHOICE} in
  9                 y|Y)
10                 echo -n "Please input two parameters,such as:[-+]m 0-59 "
11                 read PARM MIN
12                 exec /home/xfm/time.pm ${PARM} ${MIN}
13                 ;;
14                 *)
15                 break
16                 ;;
17                 esac
18         done
19
20   elif [ "$1" = "+m" -o "$1" = "m" ] && [ "$2" -ge 0 -a "$2" -le 59 ];then
21         time_p=$(date -d "+$2 minute")
22         echo ${time_p}
23
24   elif [ "$1" = "-m" ] && [ "$2" -ge 0 -a "$2" -le 59 ];then
25         time_m=$(date -d "-$2 minute")
26         echo ${time_m}
27   else
28         echo "The time's format is wrong"
29         exit
30 fi

以上红色部分,把[]替换成[[]],如:
[ "$1" = "+m" -o "$1" = "m" ] && [ "$2" -ge 0 -a "$2" -le 59 ]
[[ "$1" = "+m" || "$1" = "m" ]] && [[ "$2" -ge 0 && "$2" -le 59 ]]

[[ \( "$1" = "+m" || "$1" = "m" \)  && \( "$2" -ge 0 && "$2" -le 59 \) ]]
运行后为什么会出错呢?

[xfm@v247 ~]$ ./time.pm
./time.pm.default: 30: [[: not found
./time.pm.default: 30: -m: not found
./time.pm.default: 30: [[: not found

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
2 [报告]
发表于 2008-11-29 11:15 |只看该作者
if [[ ( "$1" = "+m" || "$1" = "m" )  && ( "$2" -ge 0 && "$2" -le 59 ) ]]; then

论坛徽章:
0
3 [报告]
发表于 2008-11-29 11:29 |只看该作者
原帖由 ynchnluiti 于 2008-11-29 11:15 发表
if [[ ( "$1" = "+m" || "$1" = "m" )  && ( "$2" -ge 0 && "$2" -le 59 ) ]]; then


修改后运行出错:
./time.pm.default: 20: Syntax error: word unexpected (expecting ")")

论坛徽章:
0
4 [报告]
发表于 2008-11-29 16:22 |只看该作者
是bash么?我这直接运行[[ "$a" = "+m" || "$a" = "m" ]] && [[ "$b" -ge 0 && "$b" -le 59 ]]没有报错。
你可以直接在bash下运行这段,然后看看是不是有问题。

论坛徽章:
0
5 [报告]
发表于 2008-11-30 12:00 |只看该作者
原帖由 walkerxk 于 2008-11-29 16:22 发表
是bash么?我这直接运行[[ "$a" = "+m" || "$a" = "m" ]] && [[ "$b" -ge 0 && "$b" -le 59 ]]没有报错。
你可以直接在bash下运行这段,然后看看是不是有问题。


多谢提醒。
后来在家中的Debian Testing XFCE i686-2.6.26-1中进行测试以上方法都运行正常。

[xfm@v247:~]$ bash --version
GNU bash, version 3.2.39(1)-release (i486-pc-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.

不知在单位的ubuntu 8.10 i686-2.6.27-7中为什么就不行。
都是指定#!/bin/bash

明天上班的时候仔细对照一下系统的环境。

论坛徽章:
0
6 [报告]
发表于 2008-12-01 11:02 |只看该作者
问题解决。
由于本人没注意,把#!/bin/bash错写成#!/bin/dash。

论坛徽章:
0
7 [报告]
发表于 2008-12-01 11:21 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP