Выполнить 2 bash команд в одной строке - PullRequest
0 голосов
/ 26 марта 2020

Я создал сценарий bash для вывода содержимого файлов *txt и для печати также имени файла, выполняемого в той же строке. Но ни с того ни с сего первая строка имеет только выходные данные, а следующая строка имеет имя первого выхода + выход следующего файла. Как я могу иметь file name + output?

for i in *.txt; do cat "$i" && echo -n "$i"; done

Выходы:

ignore
alex.txt11111
alex1.txtda
alex2.txtnu
alex3.txt

Правильно будет

alex.txt ignore; alex1.txt 11111; alex2.txt da; alex3.txt nu

1 Ответ

0 голосов
/ 26 марта 2020

Сначала вы печатаете содержимое файла, затем печатаете его имя без новой строки (echo -n). Вы должны сделать наоборот: напечатать имя без новой строки, но с дополнительным пробелом в конце, а затем распечатать содержимое файла.

for f in *.txt; do
    echo -n "$f "
    cat "$f"
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...