如题,我在使用 wpa_cli 这个命令写入wifi信息的时候感觉每次都要打很长的代码
于是写了一个bash脚本想使得写入更加轻松,但是在写入的时候遇到了变量调用的问题
希望大家能看一看哪里出了问题
代码大概如下:
read -p "intput a SSID:" ssid
read -p "input password of $ssid :" psk
a= ./wpa_cli -i wlp5s0 add_network
./wpa_cli -i wlp5s0 set_network $a ssid '"$ssid"'
./wpa_cli -i wlp5s0 set_network $a psk '"$psk"'
如上所示 ./wpa_cli -i wlp5s0 add_network 这个命令会返回给窗口一个值(networkid),是这样子的
于是我希望用 a= ./wpa_cli -i wlp5s0 add_network 这样一个命令来获取这个返回值,证明后发现是不可以的,那么我怎么样能够获得 ./wpa_cli -i wlp5s0 add_network这个命令返回给我的network id的值呢?
然后的问题也随之而来,使用 wpa_cli 命令设置这个网络的ssid和psk需要用到
$ wpa_cli -i wlan0 set_network 0 ssid '"name"'
$ wpa_cli -i wlan0 set_network 0 psk '"psk"'
这两种命令
这里面的name和psk外面包的是单引号加上双引号
而我想用之前获取的ssid和psk还有networkid来完成同样的操作
a= ./wpa_cli -i wlp5s0 add_network
./wpa_cli -i wlp5s0 set_network $a ssid '"$ssid"'
./wpa_cli -i wlp5s0 set_network $a psk '"$psk"'
这里面被单双引号包括的$ssid和$psk还是一个变量了吗
而运行了这个脚本之后发现确实存在问题
networkid也没有成功的用$a变量替换掉,ssid和psk也没有
如图所示
请问大神们有什么方法能让我在单双引号中调用这个变量呢,转义符可以吗?
说了这么多 主要问题应该在于如何在 ‘ “ ” ’ 中引入变量
and
如何能获得创建的network id的值到一个变量上?
https://blog.csdn.net/u012823211/article/details/51087201
wpa_cli set_network 0 ssid '"'$ssid'"'
注意:$ssid两边的
单引号 双引号 单引号
下面是我实际使用的脚本, 亲测可用
1)
echo NetGear-123 > /nvram/wifi.conf
echo 12345678 >> /nvram/wifi.conf
2) 下面ssid=**反单引号**cat /nvram/wifi.conf | sed -n '1p**' 再反单引**号
反单引号就是和“~”按键一起的符号. 网页排版不太对。
如图
ssid=cat /nvram/wifi.conf | sed -n '1p'
passwd=cat /nvram/wifi.conf | sed -n '2p'
echo '"'${ssid}'"'
echo '"'${passwd}'"'
wpa_cli -p /tmp/wpa_ctrl scan
wpa_cli -p /tmp/wpa_ctrl scan_results
wpa_cli -p /tmp/wpa_ctrl remove_network 0
wpa_cli -p /tmp/wpa_ctrl add_network
wpa_cli -p /tmp/wpa_ctrl set_network 0 ssid '"'$ssid'"'
wpa_cli -p /tmp/wpa_ctrl set_network 0 key_mgmt WPA-PSK
wpa_cli -p /tmp/wpa_ctrl set_network 0 psk '"'$passwd'"'
wpa_cli -p /tmp/wpa_ctrl select_network 0
wpa_cli -p /tmp/wpa_ctrl status
udhcpc -i wlan0 -qn -s /etc/udhcpc.sh
如图