Сравнение строк Bash не работает на BusyBox - PullRequest
1 голос
/ 02 мая 2019

Я не понимаю, почему этот bash-скрипт не будет работать на встроенной оболочке BusyBox v1.29.3 () (ash).

Вот код:

#!/bin/sh

MODE=$(cat /etc/config/wireless | grep 'option mode') #not working
#MODE="option mode 'sta'" ==> this works
echo $MODE

MCHECK="option mode 'sta'"

echo $MCHECK

if [ "$MCHECK" = "$MODE" ];then
   ping -c3 www.google.com > /dev/null
   a=$?
   echo $a
   if [ $a -eq 0 ];then
      echo "ok"
   else
      echo "fail"
   fi
else
    echo "no sta mode"
fi  

Это работает правильно, если я "форсирую" строку с переменной. (#MODE) Я предполагаю, что в возвращаемой переменной cat есть символы, которые создают другую строку.

У меня всегда был режим "без sta", так что if не вернет true. Опциональный режим в etc / config / wireless совпадает со строкой для сравнения.

Не могу найти то, что мне не хватает ..?

1 Ответ

0 голосов
/ 02 мая 2019

Проблема заключалась в том, чтобы получить строку с ведущими нулями.

MODE="$(cat /etc/config/wireless | grep 'option mode')"

Следование дает тот же результат без пробелов.

MODE="$(cat /etc/config/wireless | sed -n 's/\s*\(option mode.*\)/\1/p'"
...