【发布时间】: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 发现问题中提供的代码存在几个问题。