【发布时间】:2014-08-21 19:32:52
【问题描述】:
您好,我想以这种方式在 bash 中解析一个包含设置的 js 文件:
user_pref("network.proxy.socks", "127.0.0.1");
user_pref("network.proxy.socks_port", 9150);
user_pref("network.proxy.type", 1);
- 如果这些行不存在,则应该创建它(>>append)。
- 如果行已经设置了这些值:什么都不做。
- 如果线条已经设置了不同的值,请将其更改为值 "127.0.0.1"、9150、1
到目前为止,我可以执行第 1 点和第 2 点,但我在第 3 点上很挣扎。 我相信它可以通过使用 bash 条件和带有正则表达式模式的 'sed' 来实现。 任何人(正则表达式大师)可以帮助我吗?
快速介绍我的问题:
我正在 OS X 上编写一个 bash 脚本,并让 socks5 在 127.0.0.1:9150 上监听。 然后我想通过编辑 prefs.js 文件(相当于 url about:config)为 Firefox 设置这些设置。用于此的 GUI 是 Preferences/Advanced/Network/Connection Settings/Manual Proxy/Socks5。
仅供参考,这是我的脚本,缺少的部分是 ###MISSING PART### :
function sshD
{
pkill firefox #Kill existing instance(s) of Firefox
#Create HTTP Proxy via SSH Tunnel
ssh -Cc blowfish -D9150 -Nf myuser@mydomain
fxpref="$HOME/Library/Application Support/Firefox/Profiles/"; fxpref="$fxpref`ls "$fxpref" | awk 'NR==1'`/prefs.js"
test ! -f "$fxpref".backup && cp "$fxpref" "$fxpref".backup
proxypref=`cat "$fxpref" | grep proxy`
###MISSING PART###
/Applications/Firefox.app/Contents/MacOS/firefox-bin -private > /dev/null 2>&1 &
}
【问题讨论】:
-
为什么你不能在不执行任何检查的情况下始终使用默认值覆盖?
-
因为这是第3点,我不知道如何检测该行并用sed替换它。如果我>>追加,我最终会创建重复项。