Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 检查文件是否存在,并等待sh脚本运行,直到找到该文件_Linux_Bash - Fatal编程技术网

Linux 检查文件是否存在,并等待sh脚本运行,直到找到该文件

Linux 检查文件是否存在,并等待sh脚本运行,直到找到该文件,linux,bash,Linux,Bash,我正在一台linux服务器上工作,它有时非常慢。因此,当我添加一些作业来运行时,我必须等待几个小时,才能运行一个简单的计算 我想知道我是否能够开始下一个分析,但让它等到上一个分析的输出出现。(第二次分析需要第一次分析输出) 我试图使Exception和其他选项起作用,但仍然没有成功(在stackoverflow的上一个问题中找到Exception和其他选项): expect{ “输出/分析\u file1.txt” } 任何想法/提示都将不胜感激,并将帮助我分配 我唯一想做的就是让第二张纸条等待

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

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

我试图使Exception和其他选项起作用,但仍然没有成功(在stackoverflow的上一个问题中找到Exception和其他选项):
expect{
“输出/分析\u file1.txt”
}

任何想法/提示都将不胜感激,并将帮助我分配

我唯一想做的就是让第二张纸条等待第一个脚本的文本文件给出

四个脚本:1

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

. ./script2.sh $repla

. ./script3.sh $replac
2:

3:

4:


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

#!/bin/bash
while  [  ! -f FILE_NAME ]
  do
     sleep SOME_SECONDS
  done
echo "file found"

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

#!/bin/bash
while  [  ! -f FILE_NAME ]
  do
     sleep SOME_SECONDS
  done
echo "file found"

您不应该单独执行多个脚本,而应该创建一个
主脚本运行程序,如下所示:

#!/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

您不应该单独执行多个脚本,而应该创建一个
主脚本运行程序,如下所示:

#!/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

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

firstProcess &  # Running in background
firstPid=$!
otherProcess    # Concurrent with firstProcess
wait $firstPid  # Wait firstProcess finish
anotherProcess

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

firstProcess &  # Running in background
firstPid=$!
otherProcess    # Concurrent with firstProcess
wait $firstPid  # Wait firstProcess finish
anotherProcess

第一个脚本是在文件完成时结束,还是继续执行其他操作?@William它在文件完成时结束。您可以在命令行上将它们链接在一起:
script1和&script2
script2将在script1完成时运行,并返回success(0)。如果您不相信script1的exit值表示成功或失败,那么只需使用
script1;script2
并且,希望script2在文件不存在时能够做一些优雅的事情。第一个脚本是否在文件完成时结束,还是继续执行其他操作?@William文件完成后,它将结束。您可以在命令行上将它们链接在一起:
script1和&script2
script2将在完成script1后运行并返回成功(0)。如果您不相信script1的exit值表示成功或失败,那么只需使用
script1;script2
,希望script2在文件不存在时能做一些优雅的事情。很抱歉,第二个问题很晚,但我如何检查上一个脚本的值以运行下一个脚本。类似于
/script等待(script)。/script2
/script1@SanderVanderZeeuw:您可以使用变量
$?
作为最后一个脚本的执行状态。对不起,我不太明白。请你再解释一下好吗?谢谢,我明天试试这个,现在得走了。我会联系你,如果它为我的脚本工作!然后,您可以将
$replac
作为
/script2.sh$replac
传递给其他脚本,并在
script2.sh
中作为
$1
获取它。很抱歉,第二个问题很晚,但我如何检查上一个脚本的值以运行下一个脚本。类似于
/script等待(script)。/script2
/script1@SanderVanderZeeuw:您可以使用变量
$?
作为最后一个脚本的执行状态。对不起,我不太明白。请你再解释一下好吗?谢谢,我明天试试这个,现在得走了。我会联系你,如果它为我的脚本工作!然后您可以将
$replac
作为
/script2.sh$replac
传递给其他脚本,并在
script2.sh中作为
$1
获取它。