сценарий оболочки не читает мой ввод построчно - PullRequest
0 голосов
/ 07 октября 2011

У меня есть скрипт оболочки Bourne вроде

#!/bin/sh

 for i in $(cat /etc/hosts)

   do

    echo $i

  done

когда я запускаю этот скрипт, каждое слово в файле / etc / hosts напечатано в другой строке, я имею в виду, что строка файла имеет вид

127.0.0.1 localhost

10.0.0.1  fenasi

на выходе нравится

 127.0.0.1

 localhost

 10.0.0.1

 fenasi

Есть ли способ прочитать файл построчно и распечатать в виде строки, как в оригинале. Мне нужно это решение для обработки входных данных командной строки

Спасибо и всего наилучшего

1 Ответ

0 голосов
/ 07 октября 2011

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

Следующее ближе к тому, что вы хотите:

#!/bin/sh
IFS="
"
for i in $(cat /etc/hosts)
  do
    echo $i
  done

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

...