Как я могу подключиться к сети Wi-Fi с одинарной кавычкой в SSID из командной строки на Raspberry Pi?

Это метод, который я использую:

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"'
>

Он будет работать в интерактивном режиме, но на самом деле я пытаюсь сделать это из Node.js, используя пакет wireless-tools.

Это моя среда:

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)

2 ответа2

2

Возможно, есть и лучшие способы, но согласно этому ответу StackOverflow, замена ' на '"'"' должна сделать это.

Полное объяснение доступно в этом ответе, но суть его в том, что оболочка интерпретирует строки, которые являются смежными без пробелов между ними, как один параметр. В этом случае он эффективно разбивает ssid на три строки ('"Your ' , "'" и ' SSID"') и затем объединяет их.

1

Да, строка в одинарных кавычках не может содержать одинарные кавычки. Тем не менее, в bash существует третий вид цитирования: ANSI-C Quoting

$ ssid=$'"Your \' SSID"'
$ echo "$ssid"
"Your ' SSID"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .