2016-08-18 1 views
1

Внимание: этот вопрос касается не использования git, а об использовании в Linux команд Linux, git, приведена здесь в качестве примера.Выполнить строку, указанную в выводе другой команды

Имея такой вывод git push

fatal: The current branch my_branch has no upstream branch. 
To push the current branch and set the remote as upstream, use 

    git push --set-upstream origin my_branch 

Я хочу, чтобы выполнить данную команду, т.е. git push --set-upstream origin my_branch.

Выполнение git push 2>&1 | tail -3 Я получаю git push --set-upstream origin my_branch напечатанный на экране.

Вопрос: Какую команду следует добавить к следующей трубе, так что задано git push. Так что я мог бы сделать git push 2>&1 | tail -3 | command_to_eval_given_string

+0

Вы хотите 'tail -1', а не' tail -3' ... это только последняя строка. – gilez

ответ

2

Просто трубу bash себя:

git push ... | bash 

Это пошлет стандартный вывод из предыдущих труб колотить, которые будут затем выполнить его.

$ echo "echo 'hello'" | bash 
hello 
$ echo "uptime" | bash 
16:22:37 up 7:31, 3 users, load average: 0,03, 0,14, 0,23 
1

Вместо труб в другую команду, вы можете вместо этого оберните трубопровод в подстановке команд и eval его. Это выполнит команду в текущем сеансе оболочки. Например:

eval "$(printf 'some output 1\nsome output 2\necho execute me'| tail -1)"; 
## execute me