在bash脚本

时间:2016-09-24 04:30:03

标签: linux bash shell

linux中的脚本以一些声明开头:

#!/bin/bash

如果我错了,请纠正我:这可能说明要使用哪个shell。

我也看过一些说:

的脚本

#!/bin/bash -ex

标志-ex

的用途是什么

3 个答案:

答案 0 :(得分:5)

#!/bin/bash -ex

<=>

#!/bin/bash
set -e -x

手册页(http://ss64.com/bash/set.html):

-e  Exit immediately if a simple command exits with a non-zero status, unless
   the command that fails is part of an until or  while loop, part of an
   if statement, part of a && or || list, or if the command's return status
   is being inverted using !.  -o errexit

-x  Print a trace of simple commands and their arguments
   after they are expanded and before they are executed. -o xtrace

更新

BTW,可以在没有脚本修改的情况下设置开关。

例如,我们有脚本t.sh

#!/bin/bash

echo "before false"
false
echo "after false"

并希望跟踪此脚本:bash -x t.sh

output:

 + echo 'before false'
 before false
 + false
 + echo 'after false'
 after false

例如,我们想跟踪脚本并在某些命令失败时停止(在我们的例子中,它将通过命令false完成):bash -ex t.sh

output:

+ echo 'before false'
before false
+ false

答案 1 :(得分:3)

这些内容记录在手册页set部分的SHELL BUILTIN COMMANDS下:

    一旦管道(或简单线)返回错误,
  • -e将导致Bash退出

  • -x将在执行命令之前打印命令

答案 2 :(得分:1)

-e

是退出任何错误的脚本

-x

是调试模式

检查bash -x commandWhat does set -e mean in a bash script?