如何根据第一个脚本的结果从另一个shell脚本调用shell脚本?

时间:2014-03-21 18:57:48

标签: linux bash shell sh

Shell脚本1.sh就像

#/bin/bash

if some java command;
then 
exit 1;
else    
exit 0;
fi

Shell脚本2.sh将根据1.sh

中的结果(1或0)确定其执行
#/bin/bash
readyToDoSomethingIfOne=$(1.sh)

if($readyToDoSomethingIfOne=="1");
then
echo "ready to go";
else    
echo "Not ready yet" ;
fi

看起来1.sh的exit命令没有将值传递给2.sh.有没有好办法呢?

顺便说一下,出于商业原因,必须将1.sh和2.sh分开。

由于

3 个答案:

答案 0 :(得分:2)

#/bin/bash

if 1.sh; then
  echo "ready to go";
else    
  echo "Not ready yet" ;
fi

答案 1 :(得分:0)

#/bin/bash
if readyToDoSomethingIfOne=$(1.sh); then # Just use the exit status of the initial script directly.
    …
else
    echo 'nope!'
fi

如果你根本不需要变量,只需运行如下脚本:

if ./1.sh; then
  echo "Not ready yet"
  return / exit / continue # Not enough context to know which exit approach is best.
fi

答案 2 :(得分:0)

构造

VAR=$(COMMAND)

将COMMAND的输出分配给变量VAR。您可以从自动变量$?获取最后一个命令的退出状态。那是

COMMAND
case $? in
  0)
      # do this
      ;;
  1)
      # do that
      ;;
  *)
      # do something else
      ;;
esac

如果您只想区分成功($? == 0)和失败($? != 0),那么您可以使用if中更简单的script1.sh构造。

如果使用$?,请注意每个命令后它都会发生变化,因此如果您需要该值供以后使用,请将其保存在变量中。

COMMAND
status=$?
# now use $status