我正在尝试获取下一个四分之一的第一天,例如现在我想要获得00:01 2012-01-01
。它不应该太难。但是我因语法错误而停滞不前,因为我无法正确地转义所有内容。在bash中使用expr的语法错误
为了得到正确的一个月,我想用:
expr `date "+((%m - 1)/3 + 1) * 3 % 12 + 1"`
的部分(%m - 1)/3 + 1
计算当前quartal的数量。 但是,*
似乎在某种程度上是错误的。如果我将其替换为+
,则不会出现语法错误(结果对我而言并不重要)。我试图通过使用\*
逃脱*
,但这没有帮助。我想反引号存在一些问题。
我怎样才能正确逃避*
?
编辑: 我的问题已经解决了,但是我想补充别人一个短的警告。请注意,如果您想直接在日期中使用它,并且还要关心正确的一年,则还需要为该月添加前导零。所以在一天结束时,paxdiablo的建议可能是最简单的。
你的意思是哪个空格? – lumbric 2011-12-24 12:21:38
您在'date'命令中使用的格式会产生空格。但'expr'只允许某些形式的空格参数。它不会允许使用'(expr)* something',这就是为什么你在星号上得到错误。 – fge 2011-12-24 12:31:06
我不认为这是一个问题。其实我需要'expr'的空格。否则'expr'只是返回字符串的输入(就像在你的代码中的第一行)。 – lumbric 2011-12-24 12:47:22