Обычно вы пишете:
diff file1 file2
Но я хотел бы получить файл и вывод команды (здесь я делаю команду тривиальной):
diff file1 <(cat file2 | sort)
Хорошо, это работает, когда я ввожу это вручную в приглашении оболочки, но когда я помещаю точно такую же строку в сценарий оболочки, а затем запускаю сценарий, я получаю ошибку
Итак, вопрос - как это сделать правильно?
Конечно, я хотел бы избежать записи вывода во временный файл.
источник
-R
в случае использованияgit diff --no-index
diff - file1
.git diff
.git diff
это совершенно другой зверь, который работает со ссылками на объекты глобуса в своем внутреннем индексе, а не на файлы;diff
работает в файловой системе.-
Синтаксис просто оболочки синтаксического сахара для/dev/stdin
, файла , представляющего поток STDIN. Следовательно, почемуdiff
можно использовать его как замену имени файла. Между темgit diff
не ищет файлы, он ищет объекты, поэтому вы должны передать ему то, что он распознает. Не используйте его для сравнения файлов друг с другом, используйтеdiff
для этого.Сфера стандартного ввода - это сам скрипт, поэтому просто поместите свой код в блок, например:
Таким образом, область действия STDIN находится внутри блока.
Я пытался, и это работает.
источник
<(…)
конструкции. Ваш скрипт будет работать или не работать в зависимости от того, запускаете ли вы его в поддерживаемой оболочке<(…)
или нет (ksh93 / bash / zsh против Bourne / ash / kshk88). Ответ Калеба прибивает все это.