如何确保第一个命令完成然后只在 shell 脚本中执行第二个命令

how to make sure first command finishes and then only execute second command in shell script

如何确保第一个命令完成,然后仅在 shell 脚本中执行第二个命令

#!/bin/sh
echo "Stopping application"
#command to stop application

echo "Starting application"
#command to start application

在上面的代码中,我想确保停止应用程序的命令正确完成,然后只启动应用程序。

如何处理。

请注意,在我的例子中,如果应用程序已经停止,则停止应用程序的命令需要一些随机时间才能完成,即 20 秒、30 秒。 所以增加睡眠不是正确的方法。

脚本背后的主要动作是重新启动应用程序。 考虑到如果应用程序已经停止,它将无法正常工作。

如果应用程序是 运行 那么脚本就可以完美运行。

有'exit codes',试试这个:

ls
...

echo $?
0

比:

ls non_existing_file
ls: cannot access 'non_existing_file': No such file or directory

echo $?
2

此命令echo $? 打印上一个命令的退出代码,如果它是 0 则表示正常,所有非 0 代码表示某种错误,这是不正常的。

您可以使用命令 return 代码和条件来执行此操作。

#!/bin/sh
echo "Stopping application"
#command to stop application
rc=$?

# if the stop command was executed successfuly
if [ $rc == 0 ]; then 
    echo "Starting application"
    #command to start application
else
    echo "ERROR - return code: $rc"
fi