如何处理双倍美元的文件名

时间:2013-07-28 20:21:53

标签: bash shell

我无法在问题列表中搜索此内容。请帮我在这里查找是否有人问过。

我在各种m / c上做ssh,文件名如“/ a / b / file $$$$”。     ssh $host "/a/b/file$$$$"

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

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

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

2 个答案:

答案 0 :(得分:2)

尝试

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

使用'而非"进行引号可防止变量替换。

来自manpageQUOTING部分):

  

用单引号括起字符可保留引号中每个字符的字面值。

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

  

$

     

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

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

答案 1 :(得分:2)

使用单引号使$未展开:

$> echo '$ok'
$ok