Bash
如何在 bash 腳本的指定行號之後或之間插入變數的內容?
我的腳本通過在第 4 行之後插入一些設置作為儲存在變數中的文本塊來修改配置文件。我知道 MacOS 的 sed 版本存在一些不兼容性,所以我安裝了 GNU 版本,但我不知道執行的是哪個 SED。
#!/bin/bash
SCRIPT_LINES=“for all “vars”;\find Runtime (“stm32”) use “c++”;\n\n” sed -i’’ “4i$SCRIPT_LINES” environment.cfg
SED 的語法是荒謬的,我想要一個替代方案,但似乎沒有一個好的替代方案。如何從 bash 腳本將變數中包含的文本塊插入到另一個文件中?
如果您發現 sed 的語法無意義,您可以通過多種不同的方式在某個位置插入一行。一種很容易理解的方法:
( head -n 4 environment.cfg && echo "$script_lines" && tail -n +5 environment.cfg ) > /tmp/tmp-environment.cfg mv /tmp/tmp-environment.cfg environment.cfg
即,回顯文件的前四行,然後回顯變數,然後從第 5 行開始列印所有內容。將結果儲存在臨時文件中,然後將其複製過來。
這樣就可以避免
sed
。☺但我認為使用 GNU sed,它只是
sed -i "4a $script_lines" environment.cfg
使用 OS X sed:
sed -i '' "4a $script_lines" environment.cfg
告訴你正在執行什麼版本:
sed --version