При отправке результата этой команды bash в файл я получаю бесконечный цикл - PullRequest
0 голосов
/ 08 июля 2011

У меня есть каталог с файлом, и я хочу распечатать его результат и сохранить его в файл. Если я сделаю следующее, я могу сбросить в STDOUT:

echo "[";
for i in ./*; do
    [[ -f $i ]] && cat $i; 
    echo ",";
done;
echo "]"

Но если я сделаю:

echo "[" < myfile.txt;
for i in ./*; do 
    [[ -f $i ]] && cat $i << myfile.txt;
    echo "," << myfile.txt;
 done;
 echo "]" << myfile.txt

Я застреваю в бесконечном цикле. Есть идеи?

Ответы [ 2 ]

2 голосов
/ 08 июля 2011

Проблема в том, что вы создаете файл в ., затем читаете и , одновременно записывая в него файл.Вам нужно хранить myfile.txt в другом каталоге, чем тот, который вы обрабатываете.

Кроме того, я предлагаю этот подход как более короткую форму того, что вы делаете:

1 голос
/ 08 июля 2011

Если вы используете >>, то в какой-то момент $i будет равно myfile.txt, и вы попытаетесь добавить его к себе ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...