如何从命令行连接到 SSID 中带单引号的 Wi-Fi 网络

如何从命令行连接到 SSID 中带单引号的 Wi-Fi 网络

如何从 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"

相关内容