LinuxSir.cn,穿越时空的Linuxsir!

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

求教bash的小问题

[复制链接]
发表于 2011-7-14 13:57:23 | 显示全部楼层 |阅读模式
以下脚本有什么问题:
if [ $dayofweek -eq 1 ] then
  if [[ ! -f "full$today.tar.gz" ]] then
    rm -rf snapshot
    tar ${tarOptions} "full$today.tar.gz" $source
  fi
else
    if [ ! -f "inc$today.tar.gz" ] then
    tar ${tarOptions} "inc$today.tar.gz" $source
    fi
fi
运行时提示:
未预期的符号 `else' 附近有语法错误
发表于 2011-7-14 16:07:05 | 显示全部楼层
if 能套用吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-7-14 16:34:40 | 显示全部楼层
不是很懂,只是借用的代码。
回复 支持 反对

使用道具 举报

发表于 2011-7-14 18:24:52 | 显示全部楼层
不是else那有错,是if的条件后面要有分号。
if else的语法是:
if 条件;then 程序;else 程序;fi
回复 支持 反对

使用道具 举报

发表于 2011-7-14 22:59:46 | 显示全部楼层
Post by lastart;2144699
不是else那有错,是if的条件后面要有分号。
if else的语法是:
if 条件;then 程序;else 程序;fi
………………………………………………
if 条件;then 程序 else 程序 fi 好像是这样
回复 支持 反对

使用道具 举报

发表于 2011-7-15 09:53:27 | 显示全部楼层
除去脚本本身的问题,单就格式上讲,这样:

  1. test=3

  2. if [ "$test" -gt 0 ]
  3. then
  4.   if [ "$test" -lt 5 ]
  5.   then
  6.     echo "The value of "a" lies somewhere between 0 and 5."
  7.   fi
  8. fi
复制代码
回复 支持 反对

使用道具 举报

发表于 2011-8-10 01:07:46 | 显示全部楼层
有两种写法
第一种 带分号的 。

  1. if [ 1 -lt 2 ]; then
  2. echo i
  3. fi
复制代码

另外then也可以另起一行

  1. if [ 1 -lt 2 ];
  2. then
  3. echo i
  4. fi
复制代码


第二种 不带分号

  1. if [ 1 -lt 2 ]
  2. then
  3. echo i
  4. fi
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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