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

С точки зрения ООП, база данных как в Объекте/Агенте, в большей системе и это должно быть ответственно за себя. Это включает необходимую потребность проверить вход.

203
задан Zaz 3 August 2016 в 22:01
поделиться

4 ответа

Вы пытались просто передать строковую переменную в цикл for ? Bash, например, автоматически разбивает пробелы.

sentence="This is   a sentence."
for word in $sentence
do
    echo $word
done

This
is
a
sentence.
257
ответ дан 23 November 2019 в 04:55
поделиться
$ echo "This is   a sentence." | tr -s " " "\012"
This
is
a
sentence.

For checking for spaces, use grep:

$ echo "This is   a sentence." | grep " " > /dev/null
$ echo $?
0
$ echo "Thisisasentence." | grep " " > /dev/null     
$ echo $?
1
42
ответ дан 23 November 2019 в 04:55
поделиться

Для проверки пробелов только с помощью bash:

[[ "$str" = "${str% *}" ]] && echo "no spaces" || echo "has spaces"
6
ответ дан 23 November 2019 в 04:55
поделиться

Просто используйте встроенный "набор" оболочек. Например,

set $text

После этого отдельные слова в $ text будут в $ 1, $ 2, $ 3 и т. Д. Для надежности обычно делают

set -- junk $text
shift

для обработки случая, когда $ text пусто или начинается с тире. Например:

text="This is          a              test"
set -- junk $text
shift
for word; do
  echo "[$word]"
done

Это напечатает

[This]
[is]
[a]
[test]
84
ответ дан 23 November 2019 в 04:55
поделиться
Другие вопросы по тегам:

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