我只是无法搜索这个问题列表。请帮我看看是否有人已经问过。
我在各种 m/c 上使用“/a/b/file$$$$”之类的文件名执行 ssh。
ssh $host "/a/b/file$$$$"
现在被
ssh $host "/a/b/file54645464"
上面替换的是我正在运行的 bash 脚本的 proc id。
所以问题是后来的查询找不到这个
任何指针都会有很大帮助。
尝试
ssh $host '/a/b/file$$$$'
引用 with'
而不是"
防止变量替换。
从手册页(部分QUOTING
):
将字符括在单引号中会保留引号内每个字符的字面值。
在您的情况下替换的变量是$
:
$
扩展为 shell 的进程 ID。在 () 子shell 中,它扩展为当前shell 的进程ID,而不是子shell。
由于$
(也)使用符号来访问$
变量的值,所以每对($$
)都被进程 ID 替换,这就是为什么你最终得到两倍的进程 ID。
使用单引号$
没有展开:
$> echo '$ok'
$ok