运行两个shell脚本,首先需要用户输入

时间:2016-06-20 18:48:32

标签: linux bash macos shell

我有两个需要按顺序运行的.sh脚本,第一个要求用户输入文件名。我想将它们组合起来制作一个使用两者的.sh脚本。它通常是连续运行的:

foo.sh input1 input2
bar.sh > file.csv

它们每个大约需要一个小时才能运行。有没有办法使命令在单个.sh脚本中运行,因此输入如下所示:

newscript.sh input1 input2

输出为:

file.csv

1 个答案:

答案 0 :(得分:0)

如果您编写了原始脚本,则可以将它们重构为一个脚本。但听起来你不想修改脚本。您可以改为创建一个包装两个脚本执行的脚本。

如果第二个脚本要求第一个脚本成功,那么在执行第二个脚本之前,只需检查第一个脚本的返回码(假设第一个脚本在错误情况下正确返回非零值):

#!/bin/bash

foo.sh $1 $2
if [ $? -eq 0 ]; then
    bar.sh > file.csv
else
    echo "foo.sh returned with an error. Skippping execution of bar.sh due to error."
fi

$1$2是脚本的第一个和第二个参数,我们将它们重定向到foo.sh.我经常喜欢在调用foo.sh之前编写一个函数来检查和处理命令行输入,但是如果foo.sh可以在执行时快速执行错误检查,则可能不值得花时间。

$?存储先前执行的命令的返回码,因此我们在继续bar.sh之前验证它等于0。