大于-小于break bash脚本的倍数-a [英] Multiple -a with greater than / less than break bash script

查看:103
本文介绍了大于-小于break bash脚本的倍数-a的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我写了一个bash脚本,仅在工作时间执行一次curl调用.由于某种原因,当我添加"-a"运算符时(由于某种原因,我的bash无法识别&&"),每小时比较失败.

I wrote a bash script that performs a curl call only during business hours. For some reason, the hourly comparison fails when I add an "-a" operator (and for some reason my bash does not recognize "&&").

尽管脚本要大得多,但这是相关的部分:

Though the script is much larger, here is the relevant piece:

HOUR=`date +%k`

if [ $HOUR > 7 -a $HOUR < 17 ];
then
  //do sync
fi

脚本给我错误:

./tracksync: (last line): Cannot open (line number): No such file

但是,这种比较不会失败:

However, this comparison does not fail:

if [ $DAY != "SUNDAY" -a $HOUR > 7 ];
then
  //do sync
fi

我的语法错误还是bash的问题?

Is my syntax wrong or is this a problem with my bash?

推荐答案

您不能在bash脚本中使用<>.为此使用-lt-gt

You cannot use < and > in bash scripts as such. Use -lt and -gt for that:

if [ $HOUR -gt 7 -a $HOUR -lt 17 ]

Shell使用

<>来执行stdin或stdout的重定向.

< and > are used by the shell to perform redirection of stdin or stdout.

您所说的比较实际上是在当前目录中创建一个名为7的文件.

The comparison that you say is working is actually creating a file named 7 in the current directory.

&&一样,它对于shell也具有特殊的含义,并用于创建命令的"AND列表".

As for &&, that also has a special meaning for the shell and is used for creating an "AND list" of commands.

所有这些的最佳文档:man bash(和man test有关比较运算符的详细信息)

The best documentation for all these: man bash (and man test for details on comparison operators)

这篇关于大于-小于break bash脚本的倍数-a的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆