1

我正在使用有时非常慢的 linux 服务器。因此,当我添加一些要为我运行的作业时,我必须等待几个小时才能运行一个简单的计算。

我想知道我是否能够开始下一个分析,但让它等到上一个分析的输出出现。(第二次分析需要第一次分析输出)

我试图让 except 和其他选项工作,但仍然没有成功(在 stackoverflow 的上一个问题中找到 except 和其他选项): expect { 'output/analysis_file1.txt' }

任何想法/提示都会受到赞赏,并将帮助我分配。

我唯一想要的是让第二个脚本等到第一个脚本的文本文件给出。

4个脚本:1。

#!/bin/bash
#$ -cwd
./script1.sh 

. ./script2.sh $repla

. ./script3.sh $replac

2:

repla=''
for i in 'abcdefghijklmnopqrst'
do
   repla=`echo $i | sed 's/'abc'/'xyz'/g'`
   #echo $repla
done

3:

replac=''
for j in $1
do
   replac=`echo $j | sed 's/'xyz'/'san'/g'`
   #echo $replac
done

4:

replace=''
for h in $1
do
   replace=`echo $h | sed 's/'san'/'sander'/g'`
   #echo $replace
done
4

3 回答 3

7

您可以使用以下核心进行一些修改

#!/bin/bash
while  [  ! -f FILE_NAME ]
  do
     sleep SOME_SECONDS
  done
echo "file found"
于 2013-04-04T13:16:01.917 回答
1

而不是独立执行多个脚本,你应该创建一个master script runner这样的:

#!/bin/bash

# sanity checks & parse arguments

./script1
ret=$?
# check for return value of script1 using $ret variable

./script2
ret=$?
# check for return value of script2 using $ret variable

./script3
ret=$?
# check for return value of script3 using $ret variable

...
# do cleanup and reporting
于 2013-04-04T13:25:29.123 回答
1

wait如果您知道在后台运行的进程的 pid,则可以使用。Wait 也将返回它正在等待停止的进程的相同退出代码。

firstProcess &  # Running in background
firstPid=$!
otherProcess    # Concurrent with firstProcess
wait $firstPid  # Wait firstProcess finish
anotherProcess
于 2013-04-04T14:29:38.467 回答