Мені потрібно запустити збережену процедуру за допомогою MySQL з bash. Збережена процедура повертає змінну, і мені потрібно перевірити значення змінної в bash, щоб відобразити її відповідно. Якщо я повторюю зміну безпосередньо, вона відображає значення правильно, але якщо я перевіряю значення за допомогою if
, if
умова ніколи не виконується, і я не отримую "ТАК" у наступному випадку.
Щоб зробити все просто, я спростив файл bash таким чином:
result=$(mysql -h localhost -u$MYSQL_USER -p$MYSQL_PASSWORD -s -e "set @myVarible = 'YES';select @myVarible" $MYSQL_DATABASE)
if [[ $result == 'YES' ]] ; then
echo YES
fi
Вихід echo -n "$result" | od -ctx1
є
0000000 Y E S \r
59 45 53 0d
0000004
result=$(mysql …)
команда працює і echo $result
виводить YES
, але if … fi
команда нічого не виводить? Є чи echo $result
вихід YES
або 'YES'
? Що станеться, якщо ви поставите $result
подвійні лапки (наприклад, echo "$result"
)?
if [[ $result =~ YES ]] ; then
echo -n "$result" | hexdump -C
.
;
ранішеfi
.