Patch
如何在 bash 中通過 heredoc 執行更新檔?
我正在嘗試在 bash 中修補這樣的文件:
cat << ''EOF | patch --dry-run > --- urancid 2017-12-06 09:56:33.000000000 -0600 patch --dry-run > +++ /tmp/urancid 2017-12-06 15:06:57.000000000 -0600 > @@ -393,7 +393,7 @@ > last if (/^$prompt/); > next if (/-ac\.\s*/); > next if (/-fs\.\s*/); > - next if (/set date\s*/) > + next if (/set date\s*/); > next if (/^(\s*|\s*$cmd\s*)$/); > if ( ! /^$prompt/) { > if ( ! $skipprocess ) { > EOF
但我得到的只是
patching file urancid Hunk #1 FAILED at 393. 1 out of 1 hunk FAILED -- saving rejects to file urancid.rej
似乎應該是可能的,如果我粘貼我粘貼的更新檔文件,它就可以工作。
我想這樣做,這樣我就可以製作一個不包含多個文件的更新檔腳本。
到目前為止,我對“更新檔”關心的內容不太熟悉,猜測存在一些空白問題?
在您的範例中修復空白以便可以應用更新檔表明該概念是可以接受的(儘管我不明白為什麼
cat
需要)。另一方面,如果您有一個空白對齊嚴重的更新檔,我建議您使用該
--ignore-whitespace
參數。(您可以在更新檔的手冊頁中找到它man patch
。)patch --dry-run --ignore-whitespace << 'EOF' ... ... EOF