【发布时间】:2021-01-20 05:59:20
【问题描述】:
我不理解 Zsh 中的这种行为:
~ % i=0
~ % date_input=2021-01-01
~ % sqlday${i}=$(date -j -v+${i}d -f "%Y-%m-%d" "$date_input" +%Y-%m-%d)
zsh: command not found: sqlday0=2021-01-01
~ %
为什么会显示“找不到命令”?为什么不将变量分配给 2021-01-01?但是,当我使用 eval 时:
~ % eval sqlday${i}=$(date -j -v+${i}d -f "%Y-%m-%d" "$date_input" +%Y-%m-%d)
~ % echo $sqlday0
2021-01-01
所以我想我不明白为什么 Zsh 试图将第一条语句作为命令执行,但第二条语句实际上是分配了一个变量。
【问题讨论】:
-
您应该使用数组而不是尝试动态创建变量名。