2017-06-08 80 views
0

我有這個劇本只用一個線,但我不明白它確實:

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

$$這裏的字面意義。該命令執行以下操作:

  • '/$$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標誌替換正在編輯的文件,即「創建並修改臨時副本」,然後將該副本重命名爲原始文件的名稱。