linux - Bash变量之谜

标签 linux bash

所以在工作中我们使用会计系统,在月底我们必须修改上个月的脚本并为打印出的日志指定一个新名称。由于我相当懒惰,宁愿花时间学习新东西,也不愿再次重复相同的任务,所以我决定编写脚本来为我完成所有工作,并将其设置为 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/

相关文章:

bash - 关于 bash 文件的混淆存在测试操作符

linux - cuda-gdb 在 linux 上的 nsight 中不工作

python - 在 Windows 10 中安装和运行 Auto-Sklearn

linux - Bash 脚本在杀死它自己及其所有子进程的 PGID 后没有被杀死

css - 如何让你的网站在 Linux 上看起来一样

python - 如何在 PythonAnywhere 上将变量打印到 Bash 控制台?

bash - awk 内的 sed 与 system() 不起作用

java - IP 作为 Linux 数组元素会抛出 UnknownHostException 但作为常量可以正常工作

linux - 当 apache 关闭时发送通知

c - 使用 exec() 函数在 C 中调用 Linux 命令