linux - 来自变量的错误替换错误

标签 linux bash shell debian

<分区>

我正在尝试编写一个脚本来对一些文件进行排序,我让它在 shell 中手动工作(Debian,似乎是破折号),但是当我运行与脚本相同的代码时,我得到“错误替换”来自第 2 行和第 3 行;

#!/bin/bash
LAST_MONTH="${date +'%Y%m' -d 'last month'}"
LAST_MONTH_HYPHEN="${date +'%Y-%m' -d 'last month'}"

我在 SO 上找到的所有内容似乎都与不同的 shell 有关,所以我尝试了 #!/bin/sh 以及 #!/bin/bash .我还尝试将脚本作为 ./filesorter.shbash filesorter.shsh filesorter.sh 运行,每个排列都给出我在相同的“错误替代”主题上有一些变化

filesorter.sh: line 2: ${date +'%Y%m' -d 'last month'}: bad substitution
filesorter.sh: line 3: ${date +'%Y-%m' -d 'last month'}: bad substitution

最佳答案

将大括号改为圆括号。

LAST_MONTH="$(date +'%Y%m' -d 'last month')"
LAST_MONTH_HYPHEN="$(date +'%Y-%m' -d 'last month')"

大括号用于变量替换,如${var},等同于$var。括号用于命令替换,如 $(command arg1 arg2) 中所示。

Shellcheck是检查 shell 脚本语法的好工具。当输入你的脚本时,它说:

SC2154: date is referenced but not assigned (for output from commands, use "$(date ...)").

关于linux - 来自变量的错误替换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47789313/

相关文章:

linux - 64位Linux内核占用哪个地址空间?

Linux $PATH 变量自动更新

python - 如何为 Python GUI 创建一个按钮,以通过 .sh 文件选择 .csv 将数据加载到 Cassandra

objective-c - 如何在 OS X 中以编程方式获取前台应用程序的 PID?

bash - UNIX 中具有正确时间戳的命令历史记录

linux - Bash 一种在出现管道错误时保留原始管道输出文件的方法?

linux - 将一个文件的内容插入到另一个文件中(在发送文件的特定行中)-BASH/LINUX

shell - Oozie shell 操作

shell - 如何对每个请求运行 shell 脚本?

java - 为什么我的spring boot应用会自动关闭?