这是我在UNIX(AIX)上运行的脚本:
$MON date +"%m"
echo 'expr $MON - 2'
输出:
04
expr $MON - 2
我只想从当前月份中减去2并显示。
答案 0 :(得分:2)
我意识到AIX
上的默认shell是ksh
的一些变体,它在输入库中没有与bash
相同的缺陷,但它是某种东西如果你最终在另一个平台遇到这个问题,请记住。
如果这是您的输入:
$MON date +"%m"
echo 'expr $MON - 2'
然后你有几个问题。
$MON
未设置,这会导致调用行date +"%m"
,这会产生输出04
expr $MON - 2
首先,要分配您执行VARIABLE=value
的变量,在您的情况下,这应该是:
MON=`date +"%m"`
请勿在{{1}}标志之前或之后放置空格。
其次,要执行expr,您需要使用反引号(=
)
`
但是,对于大多数shell,您应该使用更现代版本的我想获得命令的结果,这是逻辑echo `expr $MON - 2`
。这些可以嵌入,这使得它们更容易理解(反引号需要转义,反引号越多,所需的转发越多,快速导致反斜杠 - palooza)。
对于bash,您需要确保将月份解释为基数为10的数字,否则一旦您点击8月,代码将停止工作:
要强制将数字解释为基数为10的数字,请在其前面加上$(command)
:
10#
示例:
MON=10#$(date +"%m")
echo $(($MON-2))
答案 1 :(得分:1)
试试这个:
MON=$(date +"%m")
echo $(($MON-2))
您不需要使用expr
,因为bash也可以执行简单的算术。
如果您的shell不支持算术表达式,请使用expr
:
expr $MON - 2
在这两种情况下,您都会得到2
作为输出。
答案 2 :(得分:1)
另一种选择:如果你想在1月或2月看到11或12,让GNU date
做算术:
date -d "-2 months" +%m