Cal*_*dge 4 linux bash ubuntu comparison-operators
我写了一个bash脚本,只在工作时间执行卷曲调用.出于某种原因,当我添加"-a"运算符时,每小时比较失败(由于某种原因,我的bash无法识别"&&").
虽然脚本要大得多,但以下是相关内容:
HOUR=`date +%k`
if [ $HOUR > 7 -a $HOUR < 17 ];
then
//do sync
fi
Run Code Online (Sandbox Code Playgroud)
该脚本给我错误:
./tracksync: (last line): Cannot open (line number): No such file
Run Code Online (Sandbox Code Playgroud)
但是,这种比较不会失败:
if [ $DAY != "SUNDAY" -a $HOUR > 7 ];
then
//do sync
fi
Run Code Online (Sandbox Code Playgroud)
我的语法错了还是我的bash出了问题?
Cos*_*atu 13
你不能在这样的bash脚本中使用<和>.使用-lt并-gt为此:
if [ $HOUR -gt 7 -a $HOUR -lt 17 ]
Run Code Online (Sandbox Code Playgroud)
<和>使用由所述壳以执行标准输入或标准输出的重定向.
您所说的比较实际上是创建一个7在当前目录中命名的文件.
至于&&,它对shell也有特殊含义,用于创建命令的"AND列表".
所有这些的最佳文档:( man bash以及man test有关比较运算符的详细信息)
这里有一些答案,但没有一个推荐实际的数字背景.
以下是如何在bash中执行此操作:
if (( hour > 7 && hour < 17 )); then
...
fi
Run Code Online (Sandbox Code Playgroud)
请注意,在数值上下文中扩展变量不需要"$".
| 归档时间: |
|
| 查看次数: |
29158 次 |
| 最近记录: |