【发布时间】:2021-01-28 13:30:58
【问题描述】:
我最近将一个 shell 脚本从 bash 转换为 zsh 并得到一个奇怪的错误。我有一个类似的命令
HOST="User@1.1.1.1"
scp "$BASE_DIR/path/to/file" $HOST:some\\path
这在 bash 中运行良好,但 zsh 因替换错误而失败。我通过将$HOST 更改为${HOST} 来解决此问题,但我很好奇为什么这是必要的。另外,奇怪的是,我有一些这样的 scp 命令,除了第一个命令之外,所有这些命令都“工作”了。但是,我最终在我的文件系统上得到了一个名为 User@1.1.1.1 的文件,这真是出乎意料。为什么这种细微的变化会产生如此大的影响?
【问题讨论】:
-
$HOST = User@1.1.1.1在 bash 中也不起作用。见Command not found in bash variable assignment -
实际路径是什么?
:可能被误解为词修饰符,因为$HOST:s等效于${HOST:s}而不是${HOST}:s。 -
这是我的转录错误。我将问题更新为正确的语法。
-
@chepner 路径是
$HOST:stage\\something,所以完整路径确实包含$HOST:s