LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 719|回复: 2

组合命令的问题

[复制链接]
发表于 2007-6-20 19:23:17 | 显示全部楼层 |阅读模式
比如我判断当前目录下一个文件是否存在,来决定接下来的动作。如果不存在,那么给出错误信息并退出。于是我这样写:
[ -f FILENAME ] || ( echo "file not exist" && exit 1 )
echo "file exist and get here"

但是我发现不论文件FILENAME是否存在,都不会打出"file not exist"这一句,而总是会执行到下面,于是我猜()是让命令在子shell中执行,可是我看的一个shell介绍的pdf中说()是当前shell执行,而{}才是子shell,但是我用{}却报错,语法都不通过。(注:我用的是bash)

不知道我哪里理解的不对,想实现我的意图,该怎么做呢?(限制在这种写法,如果用if的话很容易,这个我是知道的),另外最好请详细指教一下在当前shell中和子shell中执行组合命令应该怎么实现啊?谢谢先!
发表于 2007-6-20 19:40:09 | 显示全部楼层
不知道LZ是怎么运行的
  1. [0 No.1027 huan@huan ~]$ ls mbox
  2. mbox
  3. [0 No.1028 huan@huan ~]$ [ -f "mbox" ] || ( echo "file not exits" && exit 1 ); echo "file exits and get here"
  4. file exits and get here
  5. [0 No.1029 huan@huan ~]$
复制代码

( ) 是在subshell中运行
{ }是在当前shell中运行
你用 { } 报错是最后的命令没有加上 ';'
或是最后的 '}'没有换行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-20 20:30:45 | 显示全部楼层
知道了,问题解决。我的那个pdf文件恰恰说反了,多谢了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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