在控制台中执行时如何覆盖 bash 变量?

问题描述

我有一个 bash 脚本可以打印昨天的日期。它看起来像这样:

#!/bin/bash

YESTERDAY_DATE=$(date '+%Y-%m-%d' -d '1 day ago')
echo $YESTERDAY_DATE

我可以像这样运行它:./script.sh输出如下:

2021-02-23

现在,我希望能够在执行时覆盖它,所以我继续将其更改为:

#!/bin/bash

: ${YESTERDAY_DATE=$(date '+%Y-%m-%d' -d '1 day ago')}
YESTERDAY_DATE_OVERRIDE=${$YESTERDAY_DATE:-(date '+%Y-%m-%d' -d '1 day ago')}
echo $YESTERDAY_DATE

当我像这样运行它时:YESTERDAY_DATE=2015-12-30 ./script.sh输出如下:

./script.sh: line 4: ${$YESTERDAY_DATE:-(date '+%Y-%m-%d' -d '1 day ago')}: bad substitution
2015-12-30

它确实打印了被覆盖的日期,但有一个错误的替换错误。有没有更好的方法来做到这一点?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)