Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos shell脚本中引用的变量_Macos_Variables - Fatal编程技术网

Macos shell脚本中引用的变量

Macos shell脚本中引用的变量,macos,variables,Macos,Variables,我正在尝试确定Mac上的自动代理URL是否已配置。 首先,我想得到端口号 port=$(route get example.com | grep interface | sed 's/.*\(...\)/\1/') 然后使用端口号获取活动网络服务 service=$(networksetup -listnetworkserviceorder | grep $port | sed 's/,.*$//; s/^.*: //') 最后,我使用主动网络服务获取自动代理信息 autoproxy=$(

我正在尝试确定Mac上的自动代理URL是否已配置。 首先,我想得到端口号

port=$(route get example.com | grep interface | sed 's/.*\(...\)/\1/')
然后使用端口号获取活动网络服务

service=$(networksetup -listnetworkserviceorder | grep $port |  sed 's/,.*$//; s/^.*: //')
最后,我使用主动网络服务获取自动代理信息

autoproxy=$(networksetup -getautoproxyurl \"$service\")
我遇到了任何包含空格的网络服务的问题。例如,Wi-Fi可以正常工作,但苹果USB以太网适配器却不能。 我认为解决办法是避开引号(\“$service\”) 奇怪的是,如果我回显$service(其中$service是Apple USB Ethernet Adapter),它返回一个正确引用的“Apple USB Ethernet Adapter”结果,如果我复制并粘贴这个精确的结果作为变量$service的替换,我会得到我期望的结果(URL:(null)Enabled:No) 但是,按照最初编写的方式运行命令会返回参数错误(错误:参数无效)

这是按原样运行脚本的结果:

 autoproxy=$(networksetup -getautoproxyurl "$service")
 echo $autoproxy
 Error: The parameters were not valid.
但是,如果我复制并粘贴$service的输出,那么它将返回我期望的结果

service=$(networksetup -listnetworkserviceorder | grep $port |  sed 's/,.*$//; s/^.*: //')
echo \"$service\"
"Apple USB Ethernet Adapter"
autoproxy=$(networksetup -getautoproxyurl "Apple USB Ethernet Adapter")
echo $autoproxy
URL: (null) Enabled: No
您正在使用“”作为autoproxy表达式中的服务变量。

您正在使用“”作为autoproxy表达式中的服务变量。

autoproxy=$(网络设置-getautoproxyurl“$service”)
如果设置正确,则应该可以工作。在运行这些命令之前,请尝试使用
set-x
,并查看它的输出。警告:输出可能有点误导,因为它打印的内容相当于正在执行的命令。例如,对于带有转义引号的版本,它将打印
++networksetup-getautoproxyurl'“Apple'USB Ethernet'Adapter”
——添加单引号表示双引号被视为参数的一部分,而不是围绕单个参数进行处理。
autoproxy=$(networksetup-getautoproxyurl“$service”)如果正确设置了
$service
,则
应该可以工作。在运行这些命令之前,请尝试使用
set-x
,并查看它的输出。警告:输出可能会有点误导,因为它打印的内容与正在执行的命令相同。例如,如果您的版本带有转义引号,它将打印
++networksetup-getautoproxyurl“Apple”USB Ethernet“Adapter”
——添加单引号表示双引号被视为参数的一部分,而不是围绕单个参数。