Чтение файла cat, передаваемого команде, не работает должным образом

У меня есть файл, содержащий список процессов, это файл input1

proc1
proc2 b
proc3 a

Я использую следующую команду, чтобы прочитать файл и передать содержимое файла в переменную, а затем что-то сделать

for in in cat `input1`;do 
echo $i
done

Он отлично работает для таких записей, как proc1. Но проблема в том, что он присваивает только proc2 переменной $i, а также назначает b переменной $i и т.д. и т.д.. Как я могу передать весь proc2 b переменной $i с пробелом между ними????

Спасибо


person theuniverseisflat    schedule 11.04.2014    source источник
comment
См. stackoverflow.com/questions/ 10929453/   -  person lurker    schedule 12.04.2014


Ответы (1)


$ while IFS= read i; do echo $i; done <input1
proc1
proc2 b
proc3 a


$ IFS=$'\n'; for i in $(cat input1); do echo $i; done
proc1
proc2 b
proc3 a

Обновление: Из комментариев следует, что вы хотите передать имя файла из внешнего цикла во внутренний цикл, который будет считывать файл. В этом случае:

for fname in input1 input2
do
    while IFS= read i
    do 
        echo $i
    done <"$fname"
done

Или, если имена файлов считываются из файла с именем filelist:

while IFS= read fname
do 
    while IFS= read i
    do
        echo 1=$i
    done <"$fname"
done <filelist
person John1024    schedule 11.04.2014
comment
Привет, Джон. На самом деле я читаю два файла. Итак, у меня есть цикл for I с циклом for I.. поэтому я передаю имя файла от одного for lopp к другому.. Не знаю, как я можно использовать эту команду в моем скрипте - person theuniverseisflat; 12.04.2014
comment
также у меня все это упаковано в дополнительную оболочку в ( - person theuniverseisflat; 12.04.2014
comment
короче говоря, я не могу использовать команду ‹входного файла, как вы сказали - person theuniverseisflat; 12.04.2014
comment
@theuniverseisflat Смотрите обновление. Кроме того, чтобы ваш вопрос оставался в силе, вы должны обновить вопрос, чтобы рассказать о цикле внутри цикла, чтобы всем было ясно, что ваш вопрос отличается от заявленного дубликата. - person John1024; 12.04.2014
comment
@theuniverseisflat Также уточните, где используется подоболочка. - person John1024; 12.04.2014
comment
Я попробовал вторую команду, которую вы поставили, и она работает ... но не в моем сценарии - вне сценария она работает нормально. Я передаю вывод как переменную и делаю ssh, и все перепуталось, спасибо - person theuniverseisflat; 12.04.2014
comment
@theuniverseisflat Вам нужно обновить вопрос, указав фактические детали того, что вы делаете, а не раскрывать его по частям. - person John1024; 12.04.2014
comment
Спасибо, Джон, я попробую.. - person theuniverseisflat; 12.04.2014