我如何解决在尝试从变量中尝试“ egrep”时弹出的“找不到命令”的问题?

时间:2019-04-02 14:49:16

标签: sh

我想制作一个程序,从文件mydata中搜索包含所有给定因素的所有行。我尝试从egrep mydata的第一个因素,并将其保存在变量a中。然后,我尝试从egrep a下一个因素,并再次将结果保存到a,直到我egrep所有因素。但是当我执行该程序时,它说

  

第14行中的“找不到命令”。

if [ $# -eq 0 ]
then
    echo -e  "Usage: phoneA searchfor [...searchfor]\n(You didn't tell me what you want to search for.)"

else
    a=""

    for i in $*
    do
    if [ -z "$a" ]
    then
            a=$(egrep "$i" mydata)
    else
            a=$("$a" | egrep "$i")
    fi
    done

    awk -f display.awk "$a"
fi

我希望所有行,包括我在display.awk中所做的模式中在屏幕上输出的所有因素。

1 个答案:

答案 0 :(得分:0)

$a包含数据,而不是命令。您需要将该数据写入管道。

if [ $# -eq 0 ]
then
    printf '%s\n' "Usage: phoneA searchfor [...searchfor]" "(You didn't tell me what you want to search for.)" >&2
    exit 1
fi

a=""

for i in "$@"; do
  if [ -z "$a" ]; then
    a=$(egrep "$i" mydata)
  else
    a=$(printf '%s' "$a" | egrep "$i")
  fi
done

awk -f display.awk "$a"