Bash-使用变量替换命令

Bash-使用变量替换命令,bash,variables,Bash,Variables,我对bash还是新手,所以我希望有比我更有经验的人能够帮助我。 我有以下代码: DAY1=$(date +"%d/%b/%Y") DAY2=$(date --date="-1 days" +"%d/%b/%Y") ... DAY14=$(date --date="-13 days" +"%d/%b/%Y") COUNT=0 我想完成的是将替换的命令称为 $DAY($COUNT+1) 生成从$DAY1到$DAY14的变量。这段代码显然不起作用,但我需要一些关于如何实现这一点的想法。我使用一个循

我对bash还是新手,所以我希望有比我更有经验的人能够帮助我。 我有以下代码:

DAY1=$(date +"%d/%b/%Y")
DAY2=$(date --date="-1 days" +"%d/%b/%Y")
...
DAY14=$(date --date="-13 days" +"%d/%b/%Y")
COUNT=0
我想完成的是将替换的命令称为

$DAY($COUNT+1)
生成从$DAY1到$DAY14的变量。这段代码显然不起作用,但我需要一些关于如何实现这一点的想法。我使用一个循环来递增COUNT变量,如下所示:

for i in $(seq 1 14); do
  let COUNT+=1
done

您可以构造变量表达式并使用eval执行命令。例如:

for i in {1..14}; do
  let COUNT+=1

  command=echo DAY${COUNT}
  eval $command

done

另一种可能更有意义的方法是使用bash数组。

不要使用
eval
;养成这种坏习惯是不好的。如果不想使用数组,请使用间接参数展开

DAY1=$(date +"%d/%b/%Y")
DAY2=$(date --date="-1 days" +"%d/%b/%Y")
...
DAY14=$(date --date="-13 days" +"%d/%b/%Y")

COUNT=7
var="DAY$COUNT"
echo "${!var}"   # Displays the value of $COUNT7

使用数组怎么样?我需要将变量传递到grep中,这样数组在这里可能更有意义。