Unix параметр псевдонима ksh для нескольких команд? - PullRequest
0 голосов
/ 21 сентября 2011

Я провел исследование и нашел несколько решений, но ни одно из них не помогло мне ... Может быть, вы могли бы мне помочь? У меня есть 2 exec: prog1 и prog2. (КШ) Я хотел бы запустить их одновременно с псевдонимом "е"

Итак, я сделал это:

е ТЕСТ

Это должно быть переведено

prog1 ТЕСТ

прог2 ТЕСТ

Я пытался:

ALIAS e = 'prog1 $ 1; prog2 $ 1 '

ИЛИ

e () {

prog1 $ 1 | prog2 $ 1

}

Без успеха.

У вас есть какие-нибудь решения?

Ответы [ 2 ]

3 голосов
/ 21 сентября 2011

Функция должна работать, но вы разделяете команды точкой с запятой, а не каналом. Или просто поместите их в отдельные строки - символ новой строки также является допустимым разделителем команд.

e() {
    prog1 $1
    prog2 $1
}

Вы должны правильно иметь двойные кавычки около $ 1, и в общем случае вы должны справиться, если существует более одного параметра; используйте "$@" для передачи всего списка параметров или переберите параметры:

e() {
    local a
    for a; do
        prog1 "$a"
        prog2 "$a"
    done
}
0 голосов
/ 21 сентября 2011

Вы говорите «запускайте их одновременно», затем вам нужно запустить один (или оба) в фоновом режиме.

alias e='prog1 $1 &; prog2 $1 &;'

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

Псевдонимы не принимают аргументы, используйте функцию.

 function e { prog1 "$1" & ; prog2 "$1" & ; }

Протестировано с

function e { sleep "$1" & ; sleep "$1" & ; }

output

/home/shellter:>e 7
[1]     384512
[2]     267648
/home/shellter:>jobs
[2] +  Running                 e 7
[1] -  Running                 e 7
/home/shellter:>jobs
[2] +  Done                    e 7
[1] -  Done                    e 7

50% приемлемости?Вы должны задавать действительно сложные вопросы.

...