Bash for loop - как включить пустые символы новой строки? (IFS) [closed]

Обратите внимание, что это псевдокод, и я не пытаюсь подсчитывать строки таким образом, этот вопрос состоит в том, чтобы выяснить, как включить полностью пустые символы новой строки в цикл for.

cat file

word



word

Так как всего 5 строк, x в конце должно быть равно 5.

IFS=$'\n'
x=0
for line in $(cat file) ; do
x=$(($x+1))
done

echo $x

Однако пустые символы новой строки не учитываются, и x равно 2 вместо 5.

Я подумал, что IFS = $ '\ n' сделает эту работу так, как я хотел. Может кто-нибудь объяснить, как сделать так, чтобы пустые символы новой строки «подсчитывались» в цикле for?

2
задан 26 July 2015 в 09:41

3 ответа

Можно сделать это использование read в while цикл вместо for цикл:

#!/bin/bash
while read line; do
    ((x++))
done < file
echo $x
exit 0
~$ cat file
word



word
~$ bash script.sh
5
1
ответ дан 26 July 2015 в 19:41

Я думаю, что необходимо будет использовать while read line вместо этого:

x=0
while read line ; do
    x=$(($x+1))
done
2
ответ дан 26 July 2015 в 19:41
  • 1
    @JarWolf отредактируйте тот другой вопрос и добавьте соответствующую информацию относительно Ваших аппаратных средств. Это может потребовать дополнительных различных и/или собственных драйверов, специально для графики, вышеупомянутого, несмотря на это. Или это могло быть дефектно... –  20 October 2016 в 03:51

Вы не можете сделать этого использования полевого разделения оболочки.

Смежные пробельные символы от IFS анализируются вместе, таким образом, Вы не можете использовать полевое разделение для различения смежные пробельные символы IFS. Из стандарта ( Shell и Утилиты , разделяют 2.6.5 ):

Каждое возникновение во входе символа IFS, который не является пробелом IFS, наряду ни с каким смежным пробелом IFS, должно разграничить поле, как описано ранее.

Это, как это.

, Так как это - гипотетический вопрос, и Вы не сказали, что это точно, что Вы делаете, я не предложу иначе.

4
ответ дан 26 July 2015 в 19:41
  • 1
    У меня есть огромная проблема при продолжении также. Я сделал отдельное сообщение на здесь об этом, однако, этот Ubuntu продолжает замораживаться, ничто не работает. Я попробовал все ctrl высоким звуком и f1, ничто не работает, за исключением перезапуска силы через, кнопка питания. Кроме того, в Другом программном обеспечении это говорит CD-ROM, основной ограниченный... Я устал от силы, загружающей этот ПК каждый как 10 минут. – Jar Wolf 20 October 2016 в 03:42

Другие вопросы по тегам:

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