加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

$$FOO在bash中做什么(在使用epm构建的deb包中)?

发布时间:2020-12-15 22:39:00 所属栏目:安全 来源:网络整理
导读:在命令行上,我得到这个: $FOO=foo$echo $FOOfoo$echo $$FOO11971FOO 这里,$$按预期解析为shell的PID,并逐字打
在命令行上,我得到这个:

$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完成.

解决方法

这显然是EPM包装工具的一个特征.引用 the documentation:

Note that all commands specified in the list file will use the variable expansion provided by EPM,so be sure to quote any dollar sign ($) characters in your commands. For example,“$foo” is replaced by the value of “foo”,but “$$foo” becomes “$foo”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读