如何从 Raspberry Pi 上的命令行连接到 SSID 中带有单引号的 Wi-Fi 网络?
这是我正在使用的方法:
wpa_cli add_network
wpa_cli set_network 0 ssid '"Your SSID"'
wpa_cli set_network 0 psk '"1234567890"'
除非 SSID 中有单引号,否则此方法有效。如果是单引号,则似乎会进入交互模式,但您无法使用它。
wpa_cli set_network 0 ssid '"Your ' SSID"'
>
我曾尝试逃避它,但没有什么不同。
wpa_cli set_network 0 ssid '"Your \' SSID"'
>
它将在交互模式下工作,但我实际上正尝试使用 wireless-tools 包从 Node.js 中执行此操作。
这是我的环境:
lsb_release -a
Raspbian GNU/Linux 9.4 (stretch)
uname -a
Linux raspberrypi 4.9.59-v7+
wpa_cli -v
wpa_cli v2.4
$SHELL -version
GNU bash, version 4.4.12(1)-release (arm-unknown-linux-gnueabihf)
答案1
可能有更好的方法,但根据这StackOverflow 答案,替换'
为'"'"'
就可以了。
完整解释可在该答案中找到,但其要点是 shell 将相邻且中间没有空格的字符串解释为单个参数。在本例中,它实际上是将 ssid 拆分为三个字符串('"Your '
、"'"
和' SSID"'
),然后将它们组合在一起。
答案2
是的,单引号字符串不能包含单引号。但是,在 bash 中,有第三种引用方式:ANSI-C 引用
$ ssid=$'"Your \' SSID"'
$ echo "$ssid"
"Your ' SSID"