Bash字符串变量won';t传递值
如果删除了最后一条管道,则该值似乎将通过,直到连接不再处于活动状态为止。然后,该值变为空或null,并且仍然有一个双引号。sed命令可以去除这些内容,但管道不允许随后传递值。我卡住了Bash字符串变量won';t传递值,bash,Bash,如果删除了最后一条管道,则该值似乎将通过,直到连接不再处于活动状态为止。然后,该值变为空或null,并且仍然有一个双引号。sed命令可以去除这些内容,但管道不允许随后传递值。我卡住了 iwgetid wlan0 | grep 'ESSID:' | cut -c 18-24 | wtf=$(echo "$1" [[ -z "$1" ]] && echo -e "Wi-Fi Not Connected!" || echo -e "Connected" 管道右侧的任何内容都在子
iwgetid wlan0 | grep 'ESSID:' | cut -c 18-24 | wtf=$(echo "$1"
[[ -z "$1" ]] && echo -e "Wi-Fi Not Connected!" || echo -e "Connected"
管道右侧的任何内容都在子shell中运行,这意味着在子shell中完成的分配在shell中的任何其他地方都不可见 另外,这里还不清楚从何处获得
$1
——来自wtf
的值不会通过任何操作进入位置参数。确定:
wtf=$(iwgetid wlan0 | grep 'ESSID:' | cut -c 18-24 | sed -e 's/^"//' -e 's/"$//')
[[ -z "$wtf" ]] && echo -e "Wi-Fi Not Connected!" || echo -e "Connected"
[[ ! -z "$wtf" ]] && echo -e "Connected" || echo -e "Wi-Fi Not Connected!"
…也就是说,这是非常糟糕的代码。读者们,请不要考虑我从OP中引用的地方作为宽恕。p> 顺便问一下,您认为
cut
的输出将如何进入$1
?它没有,也不能$1
保存位置参数,而不是stdin或上次运行命令的内容。顺便说一句,下次你问问题时,你可能会考虑创建一个最小的复制器——人们可以运行它来查看你的bug,即使他们没有,例如,碰巧是在Linux机器上,使用兼容版本的iwgetid
的无线网络。