2016-06-14 29 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

相關問題