【问题标题】:Manipulating the day of the year操纵一年中的哪一天
【发布时间】:2016-01-20 22:38:00
【问题描述】:

我想得到一年中的哪一天,然后减去一个,然后再减去三。它是用于在 crontab 中运行我的脚本的开关。

if (((date(%j) -1) %3))
 echo 'hello'
 exit()
else
 echo hi
fi

这只是为了测试它是否有效,但是我得到了

./getdate.sh: line 4: syntax error near unexpected token `fi'
./getdate.sh: line 4: `fi'

这对你们中的一些人来说可能是微不足道的,但我对 bash 还是很陌生。

谢谢

【问题讨论】:

  • 如果该脚本有问题,如果它打算成为 Bash,则存在一些问题。你试过shellcheck.net 吗?
  • @Biffen 我什至不知道那是一个网站,我去看看。
  • 还要注意date +%j(我假设你的意思)打印前导零,Bash 会认为这是一个八进制数。

标签: bash cron crontab


【解决方案1】:

这就是我认为你的意思:

#!/bin/bash

if (( ( $(date +%-j) - 1 ) % 3 ))
then
  echo 'hello'
  exit
fi

echo hi
  • 始终使用 shebang。

  • 要执行date 并使用它打印的内容将其包装在$() 中。

  • 命令的参数,在本例中为date,只需遵循命令(和空格)即可;没有括号。

  • date 想要一个+ 作为格式的前缀。

  • %j 将打印前导零,Bash 将其用于表示数字是八进制。使用%-j 不会得到这样的零。

  • 我想你想在模数之前减去 :使用括号进行排序。

  • if 需要then

  • exit 不应有括号。

  • exit 之后不需要else

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多