linux - 使用 [] 的争论太多
问题描述
我正在尝试编写一个脚本来根据 wi-fi 强加一个静态 ip。当我尝试执行以下表达式时出现问题,输出告诉我我有太多参数。
[ $(cat /etc/dhcpcd.conf | grep 'interface wlan0') = 'interface wlan0' ]
而检查这个表达式它会给出所需的输出。
[ $(iwlist wlan0 scanning | grep 'ESSID:"Wi-Fi 61"') = 'ESSID:"Wi-Fi 61"' ]
谁能告诉我为什么第一个表达式不起作用而第二个表达式起作用,因为据我了解它们具有相似的结构。
解决方案
Mihir 的回答解释了发生了什么。我发现另一种更简洁的解决方案是使用 grep 命令的返回码作为 if 条件。如果返回为 0,则评估太真实。如果该值是其他任何值,则为 false
因此,您不会从 grep 使用该-q
选项获得输出。
if grep -q 'interface wlan0' /etc/dhcpcd.conf
then
# Do something
fi
if iwlist wlan0 scanning | grep -q 'ESSID:"Wi-Fi 61"'
then
# Do something
fi
推荐阅读
- java - 使用 Java 验证 Firebase 用户 (IllegalArgumentException)
- python - 编译的python版本:ModuleNotFoundError at import
- javascript - 单击 yt-video 时加载 js 函数?
- ios - 具有自定义配置的 UICollectionView 列表 - 如何将单元格中的更改传递给视图控制器?
- android - Android Studio 编译慢
- java - 如何通过 Id 获取模型类的值以及另一个内部类的值?
- python - 为什么在解析时 lxml 与带有 lxml 后端的 bs4 相比具有不同的行为
- google-api - Google Local Services Ads API
- typescript - 使用 TypeScript 在另一个接口中使用接口中的一个属性?
- python - 正则表达式使用特殊字符(破折号、撇号)拆分名称