Bash:回显嵌套变量
Bash: Echo nested variable
我正在处理我分叉的 vpn 脚本,我想添加一个对话选项,以便它接受由 space 分隔的用户输入,然后将输入与一些嵌套设置文本回显到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-option 周围的引号使嵌套变得困难。
有人有更好的方法吗?
在问这个问题之前,我已经尝试了很多次并搜索了嵌套。
谢谢。
单引号禁止变量扩展和命令替换。除了少数例外,单引号内的字符都是普通字符。
但是,您可以将字符串连接在一起:
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 quote
我正在处理我分叉的 vpn 脚本,我想添加一个对话选项,以便它接受由 space 分隔的用户输入,然后将输入与一些嵌套设置文本回显到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-option 周围的引号使嵌套变得困难。
有人有更好的方法吗?
在问这个问题之前,我已经尝试了很多次并搜索了嵌套。
谢谢。
单引号禁止变量扩展和命令替换。除了少数例外,单引号内的字符都是普通字符。
但是,您可以将字符串连接在一起:
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 quote