我只有一行这个脚本,但我无法理解它的真正含义:
sed -i '/$$wf_cdc=/c\$$wf_cdc='"$1"'' /Infa_sharedBDE/PARAMS/pf_CREDITO_CDC.cfg
它应该替换创建pf_CREDITI_CDC.cfg
文件的副本,但是
这个命令做了什么?
'/$$wf_cdc=/c\$$wf_cdc='"$1"''
什么是$$
?
答案 0 :(得分:0)
$$
。该命令执行以下操作:
'/$$wf_cdc=/
是一个行地址:如果一行包含字符串$$wf_cdc=
,那么...... c\$$wf_cdc='"$1"''
也可以写成c $$wf_cdc='"$1"''
(至少在GNU sed中):它用\$$wf_cdc='"$1"''
替换模式空间(当前行)。就个人而言,我两次都逃脱$
以确保它不会被解释为行尾锚点,但有时你会在没有它的情况下逃脱。
'"$1"''
是第一个正确引用的位置参数:sed命令的单引号,然后在双引号中插入$1
,然后完成单引号字符串的其余部分(在这种情况下为空,并且在我看来可以放弃。)总而言之,这将在函数或脚本中调用,找到包含$$wf_cdc=
的行并将其替换为$$wf_cdc=<parameter>
,其中<parameter>
被提供给脚本或函数它的第一个论点。
-i
标志取代正在编辑的文件&#34;就位&#34;,即制作和修改临时副本,然后将该副本重命名为原始文件的名称。