Bash 脚本不评估文件名中的变量

Gia*_*ini 1 linux bash

我有一个 bash 脚本,它创建了我的文件夹的备份。它应该使用版本号命名 tar gz 文件,但它没有:

#!/bin/bash

ver='1.2.3'
tar czf $ver_myfolder.tar.gz .
Run Code Online (Sandbox Code Playgroud)

预期输出:

1.2.3_myfolder.tar.gz

实际输出:

_myfolder.tar.gz

如果我像这样附加变量:

#!/bin/bash

ver='1.2.3'
tar czf myfolder-$ver.tar.gz .
Run Code Online (Sandbox Code Playgroud)

有用

anu*_*ava 5

您应该${var}在此处使用,因为您在其后附加下划线,下划线被视为变量名称的有效字符。由于这一事实,shell 不知道您是在扩展变量名$ver还是$ver_myfolder

ver='1.2.3'
tar czf "${ver}_myfolder.tar.gz" .
Run Code Online (Sandbox Code Playgroud)

由于$ver_myfolder未设置,您将获得一个空值。