所以在工作中我们使用会计系统,在月底我们必须修改上个月的脚本并为打印出的日志指定一个新名称。由于我相当懒惰,宁愿花时间学习新东西,也不愿再次重复相同的任务,所以我决定编写脚本来为我完成所有工作,并将其设置为 cron 作业。由于我刚刚开始这份工作,而且我对 Bash 编程总体上还是个新手,所以我决定进行一些研究,找到了完成这项工作所需的一切,并想出了这个办法。
#!/bin/bash
month= $(echo $(date --date="last month" +%b))
year=$(echo $(date +%Y))
echo $(date --date="last month" +%Y-%m-%d)
echo $(date --date="yesterday" +%Y-%m-%d)
echo $(date --date="last month" +%b)
echo garuda-summary-$month$year.log;
然后打印出来
test.sh: line 2: Apr: command not found
2011-04-02
2011-05-01
Apr
computer-summary-2011.log
所以我又玩了一会儿,让它开始工作。但它很难看,我想知道为什么它以前不起作用。致谢
#!/bin/bash
month= $(echo $(date --date="last month" +%b))
year=$(echo $(date +%Y))
echo $(date --date="last month" +%Y-%m-%d)
echo $(date --date="yesterday" +%Y-%m-%d)
echo $(date --date="last month" +%b)
echo garuda-summary-$(date --date="last month" +%b)$year.log;
最佳答案
test.sh: line 2: Apr: command not found
是因为您在分配给月份时在“=”之后有一个空格。这个空格让 bash 认为 Apr($(echo $(date --date="last month"+%b))) 的输出是你要调用的命令。
这也将导致在 shell 中不设置月份,因为在同一行上指定一个命令作为变量赋值告诉 bash 仅在调用指定命令时使用该变量值。
关于linux - Bash变量之谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5861607/