Задать вопрос
vlakhvo
@vlakhvo
front-end developer

Как пробросить аргументы в следующий pipe?

Есть программа, которая вызывается так:
```
cat some.js | eslint --stdin --stdin-filename=some.js
```
на вход принимает содержимое файла, а еще у нее есть параметр, который принимает имя файла. (--stdin-filename=some.js) нужно для правильного вывода.

Как мне пробросить аргумент из одной части (в данном случае some.js) в следующую часть и подставить в параметр --stdin-filename?
  • Вопрос задан
  • 530 просмотров
Подписаться 2 Оценить 2 комментария
Решения вопроса 1
@RPG
В данном конкретном случае можно вызвать просто: eslint yourfile.js

Пробросить аргумент, если я правильно понял, можно с помощью переменной:
file=some.js
eslint --stdin --stdin-filename="$file" < "$file"

Или обернуть в функцию:
myeslint() {
eslint --stdin --stdin-filename="$1" < "$1"
}
myeslint some.js

Вместо cat лучше использовать перенаправление ввода (<).

UPD. Не заметил комментария.

git diff --cached --name-only | xargs eslint

Ну и напоследок кунг-фу:

git diff --cached --name-only | xargs -I{} bash -c "cat {} | eslint --stdin --stdin-filename={}"
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы