如何使用shell触发多个相关程序?
问题描述:
我具有被模块化的这样的应用程序:如何使用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
.
.
.
.
能
人帮助我呢?我究竟做错了什么?
答
您正在错误地使用位置参数。
run.sh input.txt output.txt
将填充位置PARAMS下面
$0
= run.sh
$1
= input.txt
$2
= output.txt
+0
甜。得到它了。从我的角度来说,这是超级愚蠢的。谢谢。 – ikis
你期待' John1024
@ John1024我明白了。我已经修复了这部分,但它仍然导致相同的行为。我想从'run.sh'触发'part1.sh'(反过来)。 – ikis
你期望'./PART1/part1.sh $ 0'完成什么?请解释你认为'$ 0'的含义。 – John1024