在命令行上,我得到这个:
$ FOO=foo
$ echo $FOO
foo
$ echo $$FOO
11971FOO
在这里, $$ 按预期解析为 shell 的 PID,并且逐字打印“FOO”。
现在,尝试理解和调试一些脚本,我发现以下内容:
#!/bin/bash
FILE1=/path/to/file/1
FILE2=/path/to/file/2
echo $$FILE1 >> $$FILE2
有问题的脚本源自 Debian 软件包的安装后脚本。这应该在运行之前进行预处理吗?
更新:该脚本是使用 epm 构建的包的一部分,并通过以下指令读取:
%postinstall <script.sh
在生成的 deb 包中,postinst 脚本显示:
#!/bin/bash
FILE1=/path/to/file/1
FILE2=/path/to/file/2
echo $FILE1 >> $FILE2
因此,处理由 epm 或 dpkg 完成。