Bash字符串变量won';t传递值

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" 管道右侧的任何内容都在子

如果删除了最后一条管道,则该值似乎将通过,直到连接不再处于活动状态为止。然后,该值变为空或null,并且仍然有一个双引号。sed命令可以去除这些内容,但管道不允许随后传递值。我卡住了

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
的无线网络。