对不起标题,我找不到合适的词来解释我的问题。
以下是代码:
wlan_c=$(iwconfig | sed '/^\(w.*$\)/!d;s/ .*//' > ./wifi_iface)
wlan=$(<./wifi_iface)
echo "$wlan"
我得到以下输出:
lo no wireless extensions.
enp4s0 no wireless extensions.
wlp2s0
最后一行是执行echo "$wlan"
的结果
前面的行来自iwconfig
,那些未被sed
格式化的行
文件./wifi_iface
也有我需要的信息
一切都按预期工作。
所以我真的想在wlp2s0
行之前摆脱那些不需要的输出
我该如何设法做到这一点?
答案 0 :(得分:2)
该输出必须转到stderr
而不是stdout
。将其重定向到/dev/null
iwconfig 2>/dev/null | sed '/^\(w.*$\)/!d;s/ .*//' > ./wifi_iface
无需将此内容分配给wlan_c
。由于您正在写入文件,因此不会将任何内容写入stdout
,因此作业将始终为空。