我正在过滤ifconfigmacOS(High Sierra)上的输出以使用简单的if语句触发动作,尽管虽然相应的字符串看起来匹配(当测试时echo)但未触发动作.
运行脚本时,如果网络en1处于活动状态,则预期的操作是打印确定.
我试过了:
printf "%s"在awk命令中"active"active一个变量进行比较en1_status=`...`为en1_status=$(...)没有成功.
#!/bin/bash
en1_status=`ifconfig en1 | grep "status: " | awk '{print $2}'`
if [ "$en1_status" = active ]; then
echo OK
fi
Run Code Online (Sandbox Code Playgroud)
而且$en1_status似乎匹配active:
echo $en1_status
active
Run Code Online (Sandbox Code Playgroud)
这通常意味着您的变量中有非打印字符 - 如语法高亮或DOS换行符.
一种简单的方法是,如果您将grep实例设置为始终插入颜色代码,--color=always而不是默认(更安全)--color=auto.
要跟踪此情况,请比较以下命令的输出:
printf '%s' "$en1_status" | xxd
printf '%s' inactive | xxd
Run Code Online (Sandbox Code Playgroud)
您也可以grep通过awk搜索来实现配置:
en1_status=$(ifconfig en1 | awk '/status: / { print $2 }')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
215 次 |
| 最近记录: |