我正在处理一个我已经分叉过的vpn脚本,我想添加一个对话选项,以便它将用户输入用空格分隔,然后将输入与一些嵌套设置文本回显到vpn server.conf文件中。
我不是一个程序员,但我真的很喜欢bash,这让我发疯了。
剧本部分
他们是一样的。
http://pastebin.com/raw/U0tSNaCP
下面两行只是为了在测试时回显结果。
现在,我面临的问题是:
echo 'push "dhcp-option DNS $(echo $i)"' >> ./server.conf;我还尝试了以下几种及其带有移动引号的变体:
echo 'push "dhcp-option DNS $i"' >> ./server.conf;但这是行不通的,因为它以文本的形式回显$i。无论我如何嵌套$i变量,bash只将其作为文本回显,而不是用户的输入。
openvpn的配置示例:
openvpn.net/index.php/open-source/documentation/howto.html#examples
;push "dhcp-option DNS 10.8.0.1"
;push "dhcp-option WINS 10.8.0.1"最后,我所想要的就是这样的结果:
push "dhcp-option DNS 1.2.3.4"
push "dhcp-option DNS 5.6.7.8"其中1.2.3.4和5.6.7.8等是用户输入。然而,围绕dhcp选项的引号使得嵌套变得困难。
有人有更好的方法吗?
在问这个问题之前,我已经尝试过很多次了,并且寻找过筑巢的方法。
谢谢。
发布于 2016-02-28 15:14:53
单引号抑制变量扩展和命令替换。除了少数例外,单引号中的字符只是普通字符。
但是,您可以将字符串连接在一起:
echo 'push "dhcp-option DNS '"$i"'"' >> ./server.conf
# ..........................ab..bccc
# a => close the opening single quote
# b => quote the expansion of $i
# c => the closing literal double quotehttps://stackoverflow.com/questions/35684143
复制相似问题