2011-09-21 36 views
0

我做了一個研究,發現了一些解決方案,但他們都沒有爲我工作......也許你能幫助我嗎? 我有2個exec:prog1和prog2。 (KSH) 我想運行它們,同時以別名 「E」用於多個命令的Unix ksh別名參數?

所以我這樣做:

ËTEST

應該由

翻譯

PROG1 TEST

PROG2 TEST

我嘗試:

ALIAS E ='PROG1 $ 1; PROG2 $ 1'

OR

E(){

PROG1 $ 1 | PROG2 $ 1

}

沒有成功。

你有什麼解決方案嗎?

回答

3

該函數應該可以工作,但是用分號而不是管道分隔命令。或者把它們放在不同的行上 - 換行符也是一個有效的命令分隔符。

e() { 
    prog1 $1 
    prog2 $1 
} 

你應該在$ 1周圍有正確的雙引號,並且在一般情況下,如果有多個參數,你應該應付;使用"[email protected]"到整個參數列表,或環上傳遞過來的參數:

e() { 
    local a 
    for a; do 
     prog1 "$a" 
     prog2 "$a" 
    done 
} 
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%的接受率是多少?你一定在問真正困難的問題。

+0

&符號後面使用分號是多餘的; &符號本身就是一個命令分隔符(帶有額外的背景語義)。 – tripleee