如何使用shell触发多个依赖程序?
Posted
技术标签:
【中文标题】如何使用shell触发多个依赖程序?【英文标题】:How trigger multiple dependent programs using shell? 【发布时间】:2016-10-14 13:29:07 【问题描述】:我有一个像这样模块化的应用程序:
`APP
PART1
part1.sh
PART2
part2.o
PART3
part3.o`
part1.o 的输入文件生成一个输出文件,该文件又是 part2.o 的输入文件,part2.o 生成另一个文件,该文件是 part3.o 的输入,最后是整个应用程序的输出。
我打算有一个 run.sh 文件,它应该为子应用程序(第 1 部分)获取第一个输入文件,依此类推触发其余的子应用程序并将最后一个输出存储在文件名中,用命令提到。像这样的:
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
完成什么?你真的要part1.sh
处理文件run.sh
的内容吗?
@John1024 我明白了。我已经修复了该部分,但它仍然会导致相同的行为。我想从run.sh
触发part1.sh
(反过来)。
您希望./PART1/part1.sh $0
完成什么?请解释您认为$0
的含义。
查看这个***.com/a/8352939/524743
@John1024 我以为我指的是input.txt
和$0
【参考方案1】:
您使用的位置参数不正确。
run.sh input.txt output.txt
将使用下面给出的值填充位置参数
$0
= run.sh
$1
= input.txt
$2
= output.txt
More on positional params
【讨论】:
甜蜜。知道了。这对我来说太愚蠢了。谢谢。以上是关于如何使用shell触发多个依赖程序?的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的 Prism 应用程序(如 MS Office)中执行多个 shell?