Я пытаюсь проверить, равен ли вывод программы чему-либо, чтобы я мог что-то сделать на его основе.Консоль печатает, что 2 значения равны, но условие не выполняется.
Вот код:
#!/bin/bash
test_id=`clasp run testRunner`
function get_logs() {
echo "trying to get logs for test id $test_id..."
logs=`clasp logs`
if logs_contain_test_id
then
print_logs
else
get_logs
fi
}
function logs_contain_test_id() {
IFS=$' '
for log in $logs
do
echo $log
echo $test_id
if [[ "$log" == "$test_id" ]]
then
return 0
fi
done
return 1
}
get_logs
Обратите внимание, что эта строка echo "trying to get logs for test id $test_id..."
печатает идентификатор только как "03443db8..."
а не полное предложение.
Также echo $log
и echo $test_id
log 03443db8
03443db8
в 2 отдельных строках, поэтому они должны быть равны.
Как я могу отладить это?Похоже, некоторые скрытые символы являются частью $test_id
Условие print_logs никогда не активируется, даже если оба возвращают print, равную консоли.Я на Mac, если это имеет какое-либо значение.
Вот странный вывод, который я получаю:
tests,
03443db8
0
03443db8
failures,
03443db8
03443db8
03443db8
03443db8... <-- this should be "trying to get logs for test id 03443db8..."
edit: после добавления set -x
я получаю эти журналы:
+ [[ failures, == \[\2\K\[\1\G\4\4\f\a\7\0\c\7 ]]
+ for log in '$logs'
+ echo 44fa70c7
44fa70c7
44fa70c7'
44fa70c7
+ [[ 44fa70c7 == \[\2\K\[\1\G\4\4\f\a\7\0\c\7 ]]
+ return 1
+ get_logs
44fa70c7...'
44fa70c7...
++ clasp logs