unix ksh alias参数用于多个命令?

时间:2011-09-21 12:01:14

标签: unix alias profile ksh

我做了一项研究并找到了一些解决方案,但它们都没有为我工作......也许你可以帮帮我吗? 我有2个exec:prog1和prog2。 (KSH) 我想用别名“e”

同时运行它们

所以我这样做了:

  

e TEST

应由

翻译
  

prog1 TEST

     

prog2 TEST

我试过了:

  

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

OR

  

e(){

     

prog1 $ 1 | prog2 $ 1

     

}

没有成功。

你有解决方案吗?

2 个答案:

答案 0 :(得分:3)

该函数应该可以工作但你用分号而不是管道分隔命令。或者只是将它们放在不同的行上 - 换行也是一个有效的命令分隔符。

e() {
    prog1 $1
    prog2 $1
}

你应该在$ 1左右正确使用双引号,在一般情况下,你应该应对是否有多个参数;使用"$@"传递整个参数列表,或循环遍历参数:

e() {
    local a
    for a; do
        prog1 "$a"
        prog2 "$a"
    done
}

答案 1 :(得分:0)

你说'同时运行',然后你需要在后台运行一个(或两个)。

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

别名在大写时不会被识别。

别名不接受参数,使用函数。

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

使用

进行测试
function e { sleep "$1" & ; sleep "$1" & ; }

输出

/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%的接受率?你必须提出非常棘手的问题。