Я знаю, что этот вопрос был размещен в марте 2011 года, но недавно я столкнулся с такой же проблемой на Debian, но нашел относительно неясную причину / решение.
Как я уверен, вы знаете, увеличение количества серийных устройств / dev / ttysx за пределами по умолчанию из четырех (/ dev / ttys0 через ttys3) легче всего сделать с помощью флага загрузки в grub (как изменение по умолчанию требует перекомпинку Ядро)
После загрузки эти новые устройства Ttys пусты (значения порта, IRQ, UART и т. Д., Установлено на ноль).
После экспериментов здесь оказывается причина, по которой вы пытаетесь Настройте порт с нулевым базовым бодом. К сожалению, он начинается как ноль.
Однако, когда вы пытаетесь изменить порт, не указав базовое бодение, Порт может стать «использоваться», и если мы не соблюдаем «Не должно иметь правило нулевого базового бода», у нас есть возможность ой Ядро через разрыв на ноль.
Что вы должны сделать, это указать значение base_baud, прежде чем делать что-либо еще. Если я помню правильно, Base_Baud 115200 работал для меня.
Прежде всего, нужно использовать WC -L
, чтобы подсчитать только ньюгольников. Это должно работать:
#!
filecounter=$(ls *.txt | wc -l)
if [ $filecounter -ne 2000 ]; then echo "message"
fi
Есть несколько ошибок в вашем коде:
WC
с флагом -L
LS
с флагом --d
-
или использовать . /
Префикс для LS
, если тестовые кронштейны
промывают кронштейны (но, возможно, это просто форматирование Stackexchange) Вот лучший рабочий пример:
file_count=$(ls -d ./*.txt | wc -l)
if [ $file_count -ne 2000 ]; then echo "message"; fi
Я думаю, что вы думаете о дисциплинах. Это функция, предназначенная только для ksh93
:
function count.get {
.sh.value=$(set -- ~(N)*.txt; echo "$#")
}
Затем, когда $ count
раскрывается, вызывается функция дисциплины , которая присваивает ей значение.
В zsh
вы также можете определить содержимое переменной как код:
count='$(set -- *.txt(N); echo "$#")'
и использовать его как $ {(e) count}
, чтобы этот код был e оценивается при расширении.
Однако они дают мало преимуществ по сравнению со стандартным способом использования функции:
count() (
set -- [*].txt *.txt
case $1$2 in
'[*].txt*.txt') echo 0;;
*) echo "$#"
esac
)
(трюка [*]
можно избежать с оболочками, которые поддерживают параметры nullglob (например, ksh93
s ~ (N)
или zsh
s (N)
выше)).
И используйте его как $ (count)
( подстановка команд ).
(см. Другие ответы по всем вопросам, связанным с вашим кодом).