我做了一项研究并找到了一些解决方案,但它们都没有为我工作......也许你可以帮帮我吗? 我有2个exec:prog1和prog2。 (KSH) 我想用别名“e”
同时运行它们所以我这样做了:
e TEST
应由
翻译prog1 TEST
prog2 TEST
我试过了:
ALIAS e ='prog1 $ 1; prog2 $ 1'
OR
e(){
prog1 $ 1 | prog2 $ 1
}
没有成功。
你有解决方案吗?
答案 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%的接受率?你必须提出非常棘手的问题。