Bash:使用-v时插入变量

时间:2014-09-22 20:55:09

标签: bash

我们说我有一个名为test.sh的bash脚本,内容如下:

echo Dir: $PWD

当我使用-v开关调用此脚本时,我可以看到正在执行的命令:

$ bash -v test.sh
echo Dir: $PWD
Dir: /Users/matt

在执行命令之前,有没有办法让它插入命令的变量?我正在寻找输出更像:

echo Dir: /Users/matt
Dir: /Users/matt

2 个答案:

答案 0 :(得分:1)

  1. 您可以将其硬编码到脚本中。在开头稍微扰乱代码:

    #!/bin/bash -ex
    echo Dir: $PWD
    

    然后像./script.sh或as那样执行它,输出将是:

    + echo Dir: /Users/matt
    Dir: /Users/matt
    
  2. 如果您想使用-v

    ,可以手动设置选项
    #!/bin/bash
    
    if [ $1 = -v ] ; then
        set -ex
    fi
    
    echo Dir: $PWD
    

    然后像./script.sh一样执行它,输出将是:

    + echo Dir: /Users/matt
    Dir: /Users/matt
    
  3. 您可以按照anubhava的建议将您的脚本标记为bash -ex ./test.sh

  4. 注意:您可以使用前面bash的样式执行命令,上面是我的偏好。


    参考文献:

    http://tldp.org/LDP/abs/html/options.html

答案 1 :(得分:1)

您正在寻找的是bash -x

bash -x test.sh
+ echo Dir: /Users/matt
Dir: /Users/matt

-x将以调试模式运行整个脚本。 在扩展命令之后但在执行命令之前,每个命令的跟踪及其参数都会打印到标准输出。