#bash #echo
#bash #эхо
Вопрос:
Когда я использую следующие операторы echo, я получаю хороший результат, который и ожидался от таких трех отдельных операторов echo:
echo AP $macaddr
echo noise floor $noise
echo $channel
Вывод:
AP ac:67:06:30:eb:00,
noise floor -96
channel=1
Но когда я меняю все три в один оператор ‘echo’, подобный следующему, вывод прерывается.
echo AP $macaddr noise floor $noise $channel
Вывод:
channel=06:30:eb:00, noise floor -96
В этом выводе я не вижу канала, а MAC-адрес отсутствует в двух его первых октетах.
Что является причиной этого? Как этого избежать?
Комментарии:
1. Это не имеет смысла. Почему
channel
должно быть напечатано первым во второй команде?
Ответ №1:
Я не знаю, откуда берется канал, но есть ли ложное ‘CR’ в начале значения $ channel или в конце $ noise? Попробуйте выполнить:
channel=`echo $channel | tr -d 'r'`
noise=`echo $noise | tr -d 'r'`
echo AP $macaddr noise floor $noise $channel
… и посмотрим, имеет ли это значение. В противном случае посмотрите, есть ли какие-либо другие сомнительные символы в $ channel и $ noise (и любой из других переменных):
echo $channel | od -t c
и если они есть, используйте tr -d
, чтобы удалить их из переменной.
Ответ №2:
У вас есть возврат каретки в конце $noise
, поэтому выходные данные ' channel=0'
(обратите внимание на начальный пробел) перезаписываются 'AP ac:67:0'
.