LINUX.ORG.RU

Поправьте меня в обработке внутри bash

 


0

1

Нужно обработать условие. Помогите/поправьте пожалуйста. Не хочет запускаться даже скрипт в первом варианте. Во втором варианте запускается, но это не то, что мне нужно.

RES=$(mysql -h************************************"); 

if ["$RES" = "lxterminal"]; then
 do echo  lxterminal; done
fi 
RES=$(mysql -h************************************"); 

if ["$RES" = "lxterminal"]; then
echo  lxterminal
fi 

Заранее благодарен.

★★

У тебя незаэкранированная " и отсутствуют пробелы между [ и его аргументами. Следующий.

anonymous
()
Ответ на: комментарий от anonymous

Теперь у меня так:

RES=$(mysql -h************************************"); 

if [ "$RES" = "lxterminal" ]; then
 do echo  lxterminal; done
fi 

Что еще изменить. Где именно не хватает "?

abbat81 ★★
() автор топика

С моей точки зрения вот так должно работать:

RES=$(mysql -h************************************")

if [ "$RES" == "lxterminal" ]; then
    echo  lxterminal
fi 

m0rph ★★★★★
()
ivan@debian:~$ cat temp.sh 
#!/bin/bash

res="lxterminal"

if [ "${res}" = "lxterminal" ]; then
	echo lxterminal
fi
ivan@debian:~$ ./temp.sh 
lxterminal

УМВР! ЧЯНТД?

solovey ★★
()
Ответ на: комментарий от abbat81

В первой строке. И что по-твоему должна делать твоя конструкция do echo lxterminal; done?

anonymous
()

Вот полный код. Никак не могу заставить работать.

#!/bin/bash
#
# Timer Script with "*"
timer() {
while sleep 1; 
do mysql -h****** -D** -u**** -p******* -e "UPDATE online SET ping = DATE_FORMAT(NOW(), '%y%m%d%H%i%s'), ping = 'True'  WHERE comp ='01'"; 

RES=$(mysql -h******** -D** -u**** -p****** -e "SELECT exec_str  FROM online WHERE comp ='01'"); 

if [ "${RES}" = "lxterminal" ]; then
	echo lxterminal
fi
done
}
abbat81 ★★
() автор топика
Ответ на: комментарий от abbat81

У тебя проинициализирована функция

#!/bin/bash
#
# Timer Script with "*"
timer() {
while sleep 1; 
do mysql -h****** -D** -u**** -p******* -e "UPDATE online SET ping = DATE_FORMAT(NOW(), '%y%m%d%H%i%s'), ping = 'True'  WHERE comp ='01'"; 

RES=$(mysql -h******** -D** -u**** -p****** -e "SELECT exec_str  FROM online WHERE comp ='01'"); 

if [ "${RES}" = "lxterminal" ]; then
	echo lxterminal
fi
done
}
допиши в свой скрипт строку
timer

Dob
()
Ответ на: комментарий от Spirit_of_Stallman

«[» .. «]»

= ----> ==

Иди руби учи. (Ну или sh ----> потом советуй).

anonymous
()
Ответ на: комментарий от Dob

Bob, вот что-только не перепробовал. В условии ИНАЧЕ даже не срабатывает. Даже с другой программой пробовал.

#!/bin/bash
timer() {
while sleep 1; 
do 
RES=$(mysql -h****** -Dbd -u*** -p*** -e "SELECT exec_str  FROM online WHERE comp ='01'"); 

if [ ${RES} = "lxterminal" ]; then
    echo pcmanfm
else
    echo pcmanfm
fi
done
}
timer
abbat81 ★★
() автор топика
Ответ на: комментарий от Dob

Dob, и со скобками тоже не работает

#!/bin/bash
timer() {
while sleep 1; 
do 
RES=$(mysql -h****** -Dbd -u*** -p*** -e "SELECT exec_str  FROM online WHERE comp ='01'"); 

if [ "${RES}" = "lxterminal" ]; then
    echo pcmanfm
else
    echo pcmanfm
fi
done
}
timer

abbat81 ★★
() автор топика

Я, возможно, зря советую, но почему бы не юзать Perl\PHP CLI?

Real1tySucks
()
Ответ на: комментарий от abbat81

Запарил уже, не в условии проблема, а в RES: уже несколько раз написали, возьми echo «$RES» | cat -A (ну или hexdump) - и посмотри, может там что лишнее.

anonymous
()
Ответ на: комментарий от arto

В том то и дело, что лежит «exec_str lxterminal» и я не знаю, как мне вывод запроса получить в виде «lxterminal», то есть, без названия таблицы/столбца в БД

abbat81 ★★
() автор топика
Ответ на: комментарий от anonymous

Как мне получить сделать ,чтобы из запроса в RES шел ответ «lxterminal» без названия столбца «exec_str lxterminal»

abbat81 ★★
() автор топика
Ответ на: комментарий от anonymous

Вот почему твой пример работает с var=«first second», но при результате двух значений из ответа запроса продолжает выводить все те же «exec_str lxterminal»

abbat81 ★★
() автор топика
Ответ на: комментарий от abbat81

но при результате двух значений из ответа запроса продолжает выводить все те же «exec_str lxterminal»

Код покажи, а то непонятно как это - и работает, и не работает одновременно.

justAmoment ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.