функция принимает командную строку, но не псевдонимы - PullRequest
0 голосов
/ 14 февраля 2011

Я создал эту функцию doit для выполнения системных команд, сценариев и псевдонимов.

function doit {
doit_cmd=$*
if [[ $cmd_trace = "1" ]] then
    echo "+ $doit_cmd"
fi  

$doit_cmd 
ret=$?
return $ret
}

Функция doit принимает командную строку (включая параметры команды). Сначала он выводит данную команду и ее параметры на стандартный вывод, затем выполняет команду. Я выполняю команды в скриптах через функцию doit отслеживать, какие команды выполняются. Строка "$ doit_cmd" в вышеупомянутом doit Функция прекрасно работает для системных команд и скриптов, но не работает, когда псевдоним дается функции doit.

Вот демонстрация проблемы.

$ alias wi = 'whoami'
$ cmd_trace = 1

$ doit whoami
+ whoami

корень

$ doit wi
+ ш doit [6]: wi: не найдено

Может кто-нибудь помочь мне в этой проблеме? Это ограничение?

1 Ответ

0 голосов
/ 14 февраля 2011

Выполните вашу команду, используя: eval $doit_cmd.

В отдельном примечании, я думаю, вы также должны изменить $* на "$@".

...