bash - Shell 脚本:[参数过多
问题描述
有人可以解释为什么我的if
陈述不起作用吗?
if [ [ $# -ge 2 ] && [ [ grep -o "$2" $1 | wc -l ] -gt 0 ] ]
解决方案
代替:
[ [ $# -ge 2 ] && [ [ grep -o "$2" $1 | wc -l ] -gt 0 ] ]
和:
[ $# -ge 2 ] && grep -q "$2" "$1"
在这个命令中:
[ $# -ge 2 ]
测试是否提供了 2 个或更多参数&&
是逻辑和grep -q "$2" "$1"
如果 pattern$2
出现在 file 中,则返回 true$1
。该选项-q
告诉grep
要安静,只需设置if
命令将要查找的退出代码。
例子:
考虑一个包含此文件的目录:
$ cat input.txt
a pattern here
让我们像在 shell 脚本中一样设置参数:
$ set -- input.txt pattern
现在,让我们运行我们的命令:
$ if [ $# -ge 2 ] && grep -oq "$2" $1; then echo yes; fi
yes
推荐阅读
- python - 字符串搜索不适用于请求结果
- c# - MVVMCross 如何在视图中显示视图
- android - 状态栏上的通知小图标为每个通知创建
- full-text-search - 在 Alfresco FTS 中与特殊字符完全匹配
- android - AndroidX 和 Android Jetpack
- algorithm - 3d“贪婪”布雷森汉姆线算法
- javascript - 为什么所有代码都并行运行而不是按顺序运行?
- python - 布尔检查未按预期运行,bash/python
- javascript - 使用 jQuery 的 Django 表单字段
- python-3.x - 重新开始随机数猜谜游戏