如何使用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
.
.
.
.

谁能帮我解决这个问题?我究竟做错了什么?

【问题讨论】:

您希望&lt; $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?

如何以 shell 依赖格式获取 cwd?

如何在一个 sql 触发器中使用多个事件?

如何使用sqlplus在shell中存储存储过程返回的多个输出列

基础的shell脚本

连接多个设备时如何使用 ADB Shell?因“错误:多个设备和模拟器”而失败