ожидается grep и целочисленное выражение - PullRequest
0 голосов
/ 16 октября 2018

Я только что сошел с ума.Я пишу код в 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, тогда все в порядке,

  • если один из них равен 1, то это ошибка

  • , если один из них равен 2, то это информация о том, что процесс завершился неудачей.

  • когда 1 или2 встречаются, код выхода должен совпадать с ошибкой в ​​txt

Мне просто нужно распознать, какой номер находится в file.txt и показать другую информацию и код выхода.

Не могли бы вы мне помочь?

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Попробуйте:

#!/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 были удалены, потому что они не нужны (и они использовались неправильно).

0 голосов
/ 16 октября 2018

Попробуйте: Мой файл такой:

>>cat /home/qlik/skrypty/windows/kody.txt
0
2
0
0

for i in `cat /home/qlik/skrypty/windows/kody.txt`
do 
if [ $i == 1 ]
then 
echo 'Error'
exit 1
elif [ $i == 2 ] 
then
echo 'Server process warning, waiting'
exit 2
else
echo 'OK!!'
fi
done

Дайте мне знать, если это работает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...