2

Как напечатать команду (повторить ее), а затем запустить ее в одной команде?

Это полезно, когда у вас есть псевдоним / функция и вы хотите напечатать, что это за команда, прежде чем запускать команду.

Это будет эквивалентно

alias mi='echo mvn install; mvn install'

Идея состоит в том, чтобы избежать повторения команды (здесь 'mvn install' написано дважды)

Что-то вроде:

alias echoAndRun='...'
alias mi='echoAndRun mvn install'

Спасибо за вашу помощь.

2 ответа2

3

Самый простой способ сделать то, что вы просите, это, вероятно, set -x для включения трассировки команд. Не забудьте выключить это позже.

function showAndTell {
    set -x
    "$@"
    set +x
}

(Обратите внимание, что псевдонимы оболочки редко бывают тем, что вам нужно, за исключением производных от csh , где они могут имитировать функции в некоторой степени, потому что фактические функции оболочки не существуют.)

Учитывая вышеупомянутую функцию, вы также можете просто echo "$@" внутри функции; если вы хотите изменить способ отображения того, что он будет запускать, вам нужно будет сделать это таким образом.

1

Ты можешь использовать

set -x

до того, как команды даны.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .