2016-06-14 31 views
0

我具有被模块化的这样的应用程序:如何使用shell触发多个相关程序?

`APP 
    PART1 
     part1.sh 
    PART2 
     part2.o 
    PART3 
     part3.o` 

为part1.o输入文件生成一个输出文件,该文件再一次为part2.o输入文件,它产生另一个文件,它是用于第三部分的输入。 o最后是整个应用程序的输出。

我打算有一个run.sh文件,该文件应该为子应用程序(part1)获取第一个输入文件,然后触发剩余的子应用程序并将最后一个输出存储到文件中名称,用命令提到。事情是这样的:

run.sh input.txt output.txt 

目前我的壳看起来是这样的:

OUTPUT1="output1.txt" 
OUTPUT2="output2.txt" 
./PART1/part1.sh $0 > OUTPUT1 && 
./PART2/part2.o <OUTPUT1> OUTPUT2 && 
./PART3/part3.o <OUTPUT2> $1 

目前,如果我运行此代码,我得到以下输出无限长:

+ ./run.sh 
+ ./run.sh 
+ ./run.sh 
. 
. 
. 
. 

人帮助我呢?我究竟做错了什么?

+0

你期待'<$ 0'完成了什么?你真的想'part1.sh'来处理文件'run.sh'的内容吗? – John1024

+0

@ John1024我明白了。我已经修复了这部分,但它仍然导致相同的行为。我想从'run.sh'触发'part1.sh'(反过来)。 – ikis

+0

你期望'./PART1/part1.sh $ 0'完成什么?请解释你认为'$ 0'的含义。 – John1024

回答

2

您正在错误地使用位置参数。

run.sh input.txt output.txt

将填充位置PARAMS下面

$0 = run.sh

$1 = input.txt

$2 = output.txt

的给定值More on positional params

+0

甜。得到它了。从我的角度来说,这是超级愚蠢的。谢谢。 – ikis

相关问题