Я пытаюсь получить сценарий оболочки, написанный для busybox на одном из наших встроенных устройств. Ниже приведена строка, которая вызывает проблемы, и я включил вывод ее работы в оболочку с флагом -x.Что не так с этой командой оболочки
if [ cut -d : -f 1-3 /sys/class/net/eth0/address | grep -q -i 01:02:03 ]; then
# Do stuff
fi
Вывод, который дается при попытке запустить его:
# sh -x ./script
+ [ cut -d : -f 1-3 /sys/class/net/eth0/address
sh: missing ]
+ grep -q -i 01:02:03 ]
grep: ]: No such file or directory
+ sync
я первоначально не писать сценарий, так что я не знаю, когда он перестал работать. Похоже, что команда, которая используется для сравнения (должна возвращать 1, если префикс MAC-адреса соответствует указанному образцу, 0 в противном случае) выполняется неправильно, но я не знаю, почему он пытается отделить команды от команды ,
Это условие 'if' никогда бы не сработало. 'cut' - это команда для себя, это не опция для команды' ['. Если вы хотите использовать конвейер команд как условие для 'if', просто отпустите квадратные скобки. И в системе без занятости, «человеческий тест» для дальнейшей мудрости. – ghoti