Intereting Posts
Какой стандартный интерфейс используется системными программами linux для отправки уведомлений по почте? Проблема с configure – не удается найти -lgcc_s Разница между командой multipath -ll и командой multipath -l Установленный диск исчезает и больше не является действительным устройством LUKS Получить пары линий и умножить Объединение нескольких заголовков с подробными файлами Как изменить шрифт по умолчанию в программе просмотра PDF в формате PDF Невозможно обновить пароль для пользователя Что означает атрибут 's' в разрешениях файлов? Как я могу автоматизировать ввод текста в подсказку? Я получаю сообщение об ошибке «mysqld dead, но файл pid существует» Поиск количества файлов в системе btrfs без использования find Не удалось восстановить потерянный логин Как настроить MySQL с помощью cloud-init? Kubuntu / Plasma (?) Падает при настройке двойного монитора

Как разбить файл и вывести его из команды?

Обычно вы пишете:

diff file1 file2 

Но я хотел бы отличить файл и выводить из команды (здесь я делаю команду тривиальной):

 diff file1 <(cat file2 | sort) 

Хорошо, эта работа, когда я ввожу это вручную в приглашении оболочки, но когда я помещаю точно такую ​​же строку в сценарий оболочки, а затем запускаю скрипт, я получаю ошибку.

Итак, вопрос в том, как это сделать правильно?

Конечно, я хотел бы избежать записи вывода во временный файл.

Я подозреваю, что ваш скрипт и ваша оболочка разные. Возможно, у вас есть #!/bin/sh в верхней части вашего скрипта в качестве интерпретатора, но вы используете bash как свою личную оболочку. Вы можете узнать, какую оболочку вы используете в терминале, запустив echo $SHELL .

Более простой способ сделать это, который должен работать в большинстве оболочек, будет заключаться в использовании перенаправления на канал вместо используемого вами оператора чтения файлов. Символ «-» является стандартной номенклатурой для чтения STDIN и часто может использоваться в качестве замены имени файла в списке аргументов:

 cat file2 | sort | diff file1 - 

Или избежать бесполезного использования кошки :

 sort < file2 | diff file1 - 

Объем стандартного ввода – это сам сценарий, поэтому просто введите код внутри блока следующим образом:

 { diff file1 <(sort file2) } 

Таким образом, объем STDIN находится внутри блока.

Я пробовал и работает.