【问题标题】:awk: cmd. line:1: fatal: cannot open file `-eq' for reading (No such file or directory)awk:命令。行:1:致命:无法打开文件“-eq”进行读取(没有这样的文件或目录)
【发布时间】:2015-09-16 14:32:25
【问题描述】:

我对 bash 脚本很陌生,我尝试检查了这个错误的前面示例,但我仍然不明白为什么这不起作用

这里是抛出错误的代码片段:

#!/bin/bash

function group_check(){
    if [[getent group | awk -F":" '{print$1}' -eq $1 ]] ; then
            echo "The user exists!"
    else
            echo "The user doesn't exist!"
    fi
}

group_check tim
group_check tam

希望有人不能指出我哪里出错了,甚至可能提出更好的方法来做这件事,但我很想了解我哪里出错了。

谢谢

【问题讨论】:

  • 您传递给 awk 的参数是 -eq,您需要使用 $() 将命令放入子 shell 中。另外我不知道它是怎么做到的,因为你还需要在[[之后留一个空格@
  • 有更简单的方法来检查参数 $1 是否在组中。
  • 感谢大家提供的帮助。

标签: bash awk


【解决方案1】:

如果要将命令的输出与数字进行比较,则必须将命令括在$(...) 中以捕获其输出:

if [[ $( getent group | awk -F":" '{print$1}' ) -eq $1 ]] ; then

注意[[ 后面的空格不是可选的。

还要注意-eq比较数字,你应该使用==进行字符串比较。

【讨论】:

  • 啊!谢谢你。是的,我不得不从它的外观再次击中书籍。我在这里混淆了很多事情,但是这是有道理的。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-03
  • 1970-01-01
  • 2018-04-13
  • 2011-12-09
  • 2011-09-23
  • 2019-05-30
相关资源
最近更新 更多