2011-04-04 105 views
0

nginx.conf我:如何將文本插入conf文件?

server { 
    listen 81; 
    ...snip... 
} 

我想要的文件看起來像這樣:

server { 
    listen 81; 
    if (-f $document_root/system/maintenance.html) { 
    return 503; 
    } 
    ...snip... 
} 

所以文(if..)只應如果它不存在插入。

這是否可以在命令行中使用一些內置程序?

喜歡的東西:

  • 打開文件
  • 看它是否有在它
  • 如果它不然後找到某些文本(listen 81;)某些文本和下一行後插入幾行文字

回答

1

這是sed的工作,包裝在一個shell腳本中。完全未經測試;調用爲「./script /path/to/nginx.conf」;請注意,它不是而是會查找您想要添加的完整文本,而只會從其第一行開始尋找足夠長的令牌。

#! /bin/sh 

if grep -q "document_root/system/maintenance" "$1" 
then : 
else 
    set -e 
    sed < "$1" > "$1.tmp" \ 
    '/listen 81;/a\ 
    if (-f $document_root/system/maintenance.html) {\ 
    return 503;\ 
    } 
    ' 
    mv -f "$1.tmp" "$1" 
fi