Подсчет файлов управляет в цикле

Я знаю, что этот вопрос был размещен в марте 2011 года, но недавно я столкнулся с такой же проблемой на Debian, но нашел относительно неясную причину / решение.

Как я уверен, вы знаете, увеличение количества серийных устройств / dev / ttysx за пределами по умолчанию из четырех (/ dev / ttys0 через ttys3) легче всего сделать с помощью флага загрузки в grub (как изменение по умолчанию требует перекомпинку Ядро)

После загрузки эти новые устройства Ttys пусты (значения порта, IRQ, UART и т. Д., Установлено на ноль).

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

Однако, когда вы пытаетесь изменить порт, не указав базовое бодение, Порт может стать «использоваться», и если мы не соблюдаем «Не должно иметь правило нулевого базового бода», у нас есть возможность ой Ядро через разрыв на ноль.

https://lkml.org/lkml/2007/2/27/201

Что вы должны сделать, это указать значение base_baud, прежде чем делать что-либо еще. Если я помню правильно, Base_Baud 115200 работал для меня.

-1
06.03.2015, 00:36
3 ответа

Прежде всего, нужно использовать WC -L , чтобы подсчитать только ньюгольников. Это должно работать:

#!
filecounter=$(ls *.txt | wc -l)
if [ $filecounter -ne 2000 ]; then echo "message"
fi
0
28.01.2020, 05:09

Есть несколько ошибок в вашем коде:

  • В большинстве оболочек имена переменной не может содержать точку
  • , вам нужно позвонить WC с флагом -L
  • ] Вам нужно позвонить LS с флагом --d
  • , необходимо отметить конец параметров с - или использовать . / Префикс для LS
  • Ваш , если тестовые кронштейны промывают кронштейны (но, возможно, это просто форматирование Stackexchange)
  • , которые не будут работать, если имена файлов содержат новые символы файлов
  • пропускает скрытые файлы.

Вот лучший рабочий пример:

file_count=$(ls -d ./*.txt | wc -l)
if [ $file_count -ne 2000 ]; then echo "message"; fi
1
28.01.2020, 05:09

Я думаю, что вы думаете о дисциплинах. Это функция, предназначенная только для 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) ( подстановка команд ).

(см. Другие ответы по всем вопросам, связанным с вашим кодом).

1
28.01.2020, 05:09

Теги

Похожие вопросы