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