0

我只是无法搜索这个问题列表。请帮我看看是否有人已经问过。

我在各种 m/c 上使用“/a/b/file$$$$”之类的文件名执行 ssh。 ssh $host "/a/b/file$$$$"

现在被 ssh $host "/a/b/file54645464" 上面替换的是我正在运行的 bash 脚本的 proc id。

所以问题是后来的查询找不到这个

任何指针都会有很大帮助。

4

2 回答 2

2

尝试

ssh $host '/a/b/file$$$$'

引用 with'而不是"防止变量替换。

手册页(部分QUOTING):

将字符括在单引号中会保留引号内每个字符的字面值。

在您的情况下替换的变量是$

$

扩展为 shell 的进程 ID。在 () 子shell 中,它扩展为当前shell 的进程ID,而不是子shell。

由于$(也)使用符号来访问$变量的值,所以每对($$)都被进程 ID 替换,这就是为什么你最终得到两倍的进程 ID。

于 2013-07-28T20:23:52.163 回答
2

使用单引号$没有展开:

$> echo '$ok'
$ok
于 2013-07-28T20:23:59.257 回答