tar -zcvf error_$(current_month).tar.gz ./error_$(current_month)*.log这句命令中包含两个变量, 为什么会报错, 应该怎么修改
时间: 2023-03-05 16:43:03 浏览: 115
error.log
这句命令中包含了两个变量 `$(current_month)`,这是一种 shell 变量的写法,可以在命令行中被展开为当前月份。但是,这种写法只在交互式 shell 中有效,在 shell 脚本中不起作用。
因此,当您在脚本中执行此命令时,`$(current_month)` 不会被展开,tar 命令会将其视为文件名的一部分,从而导致错误。您可以尝试修改命令,将变量替换为当前月份的实际值。例如,如果当前月份是 02,您可以使用以下命令:
```
tar -zcvf error_02.tar.gz ./error_02*.log
```
如果您希望使用变量来指定月份,可以将命令写入一个脚本文件,然后在脚本中使用 shell 变量来指定月份,例如:
```
#!/bin/bash
current_month=$(date +%m)
tar -zcvf error_${current_month}.tar.gz ./error_${current_month}*.log
```
在此脚本中,`$(date +%m)` 将会展开为当前月份,然后将其存储在变量 `current_month` 中。然后,`tar` 命令将使用该变量来创建归档文件。
阅读全文