linux 如何将日期传递到命令行和Shell脚本中?

kd3sttzy  于 2023-05-06  发布在  Linux
关注(0)|答案(1)|浏览(150)

我想通过Dates到命令行以及Shell脚本。
例如。该脚本被称为MoneyCalculator.sh,我想计算过去10个日期,并通过命令行参数到脚本。

./MoneyCalculator.sh date +"%Y-%m-%d" -d "-10 days"  date +"%Y-%m-%d" -d "-1 days"

上面的不起作用,我尝试使用[],但仍然不起作用。有谁知道我该怎么过?
另外,在shell脚本中,如果我想用作为变量;

moneyDate=date +"%Y-%m-%d" -d "-10 days"  <<< this doesnt work either.
gt0wga4j

gt0wga4j1#

我不太清楚你想干什么,但也许这对我有帮助?
我假设您要向./MoneyCalculator.sh脚本传递两个参数,其中第一个参数是今天的10天前,第二个参数是今天的前天(即昨天)。在这种情况下,我建议:

./MoneyCalculator.sh `date -I -v -10d` `date -I -v -1d`

如果这不是你所想的(我对此表示怀疑),我很乐观,你将能够适应你的具体需求的方法。
我创建了一个简单的脚本,简单地执行echo $1 $2,并发现今天,它打印了2023-04-23 2023-05-02,因此它可以按照我的预期工作。祝你好运!
编辑1:@Bodo指出,新语法$(...)优于反勾,我将在下面的例子中使用它,展示定义/使用变量,并将您的参数转换为脚本中的日期示例。

#!/bin/bash
D1=$1  # defines D1 as your first date
D2=$2  # defines D2 as your second date
echo $(date -I -j -v -1y -f "%Y-%m-%d" $D1)  # specify a date (D1) then subtract one year
echo $D1 $D2

当然,请记住使用chmod +x使脚本可执行。好好享受吧

相关问题