linux - 需要 grep 和整数表达式

标签 linux bash shell grep

我刚刚失去了理智。我在 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则为error

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

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

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

你能帮帮我吗?

最佳答案

尝试:

#!/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 变量已被删除,因为它们不是必需的(并且它们被错误地使用)。

关于linux - 需要 grep 和整数表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52832927/

相关文章:

sql-server - 在 Linux 上的 SQL Server 中写入文件

linux - Bash 脚本输出到 rest api 调用

linux - 将 HH :MM:SS (hours:minutes:seconds. split seconds) 转换为秒的简单方法

bash - 如何阻止 ldapsearch(1) 对 userPassword 和其他属性进行 base64 编码?

shell - Ubuntu:- 将删除关键字附加到文件中

shell - 如何检查 Docker 是否安装在 Unix shell 脚本中?

linux - 在linux中的多个目录中的文件上运行shell脚本

bash - 如何从包含与搜索词完全匹配的 CSV 文件中删除所有行?

linux - 使用 AWK 打印除第一列之外的所有列

git - 如何让 bash 补全与别名一起使用?