weixin_42340144
柳罐罐
采纳率30.8%
2018-06-25 14:22

使用bash脚本写wpa_cli命令的时候遇到的变量传递的问题

20
已采纳

如题,我在使用 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的值到一个变量上?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • devmiao devmiao 3年前
  • dddddttttt joy_fish 1年前

    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

    如图
    图片说明

    点赞 1 评论 复制链接分享

相关推荐