【问题标题】:grep and integer expression expected需要 grep 和整数表达式
【发布时间】:2018-10-16 10:02:06
【问题描述】:

我刚刚疯了。我在 Windows 中编写代码,现在我必须在 Linux 中制作一个小插件,以便与我的主要代码进行通信。 我用 bash 编写代码,在 Windows 上,一切都会好起来的,但是在这里,在 Debian 上……我花了 2 天时间弄清楚发生了什么,并尝试了几乎所有东西。

这是我的代码:

#!/bin/bash 
search1=`cat /home/qlik/skrypty/windows/kody.txt | grep -E '[0-2]'`
case $search1 in
[|1|])
echo "Error, need restart"
exit 2
;;
case $search1 in
[|2|])
echo "Warning with server process, waiting"
exit 1
;;
*)
echo "OK"
exit 0
;;
esac

我也试过这种方式

#!/bin/bash
plik1='/home/qlik/skrypty/windows/kody.txt'
szukaj1=$( grep 1 $plik )
szukaj2=$( grep 2 $plik )
if [ $($szukaj1) -eq "1" ] ; then
echo "Error, need restart"
exit 2
elif [ $($szukaj2) -eq "2" ] ; then
echo "Server process warning, waiting"
exit 1
else
echo "OK"
exit 0
fi

以及各种不同的方式。我一直有一个错误:

integer expression expected

binary operator expected

[: -eq: unary operator expected

我已经阅读过,我认为问题出在符号 $(...)/[...]/.../'...'/[[...]]/$($ ...)/"..." 我真的,真的不知道如何处理我的代码,我尝试了几乎所有的配置。

代码很简单——

  • 它读取file.txt
  • file.txt中有4个数字[例如:0 0 2 0]

  • 如果都是0,那么就ok了,

  • 如果其中一个为1,则为错误

  • 如果其中之一为2,则为处理失败的信息。

  • 满足1或2时,退出码应与txt中的error相同

我只需要识别 file.txt 中的数字并显示不同的信息和退出代码。

你能帮帮我吗?

【问题讨论】:

  • 你在启动echo $search1时看到了什么?
  • 当我离开我的脚本时:search1=cat /home/qlik/skrypty/windows/kody.txt | grep -E '[0-2]' echo $search1 结果是,就像我的 txt 文件:0 0 1 0
  • 当我保持原样时,在 linux 的主控制台中执行脚本我得到 * ./qlik_procesresponse.sh: 第 8 行:意外标记附近的语法错误 $search1' ./qlik_procesresponse.sh: line 8: case $search1 in' *然后在我写 *echo $search1 时在那个控制台上,结果是空格,就像任何东西的回声 = 空白输入
  • Shellcheck 发现问题中提供的代码存在几个问题。

标签: linux bash shell grep


【解决方案1】:

试试:

#!/bin/bash

plik1='/home/qlik/skrypty/windows/kody.txt'

if grep -q -- 1 "$plik1" ; then
    echo "Error, need restart"
    exit 2
elif grep -q -- 2 "$plik1" ; then
    echo "Server process warning, waiting"
    exit 1
else
    echo "OK"
    exit 0
fi

它基于问题中的第二个代码示例,但 szukaj 变量已被删除,因为它们不是必需的(并且它们的使用不正确)。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-07-12
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多