这个问题与此处的线程相关:
Today's date, minus X days in shell script
但是因为我现在正在操作变量,所以我启动了另一个线程。
如上所述,我需要获取今天的日期减去 200 天,并将年、月和日放在单独的变量中(在这个问题中我将使用 200,而在另一个问题中则使用 222)。但是,我需要将一月表示为 0,二月表示为 1(或 01),三月表示为 2(或 02)等...我尝试过:
MONTHS200=$(date -j -v-200d -v-1m +"%m")
if ${MONTHS200}=01; then
${MONTH200}=0
else ${MONTHS200}=${MONTH200}
fi
但我收到错误 ./update_newdateformat.sh: line 20: 12=01: command not find ./update_newdateformat.sh: line 23: 12=: command not find
-v-1m
适用于除一月之外的所有月份,因为它变为 12,而不是 0
最佳答案
以下是如何在脚本中将所有月份数字下移 1:
MONTHS200=$(date -j -v-320d +"%m")
# Remove leading zero if there is one, so it doesn't cause problems later
MONTHS200=${MONTHS200#0}
MONTHS200=$((MONTHS200-1))
这里是如何使用if
和=
shell 中的(赋值)语法:
if [[ "${MONTHS200}" == "01" ]]; then
MONTHS200="0"
else
MONTHS200=${AnotherVariable}
fi
请注意,对于数值比较,您需要使用:
-
-eq
而不是==
-
-ne
而不是!=
-
-lt
而不是<
-
-le
而不是<=
-
-gt
而不是>
-
-ge
而不是>=
例如:
if [[ "${MONTHS200}" -eq 1 ]]; then
关于macos - 根据一组条件更改变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13535871/