linux - 开关不工作

标签 linux bash shell

在我的脚本中有以下内容:

DEBUG="false"
while getopts ":d:" opt; do
      case $opt in
        d)
          $BIN_ECHO -e "DEBUG MODE ENABLED WITH $OPTARG" >&2
          DEBUG="YES"
          ;;
        \?)
          $BIN_ECHO -e "Invalid option: -$OPTARG" >&2
          exit 1
          ;;
        :)
          $BIN_ECHO -e "Option -$OPTARG requires an argument." >&2
          exit 1
          ;;
      esac
    done

但是,每次我运行它时,DEBUG=false 似乎都没有得到优先考虑。

我有这个例子:

if [ $DEBUG=="YES" ]; then
    $BIN_ECHO -e "SETTING LOCATION TO /USR/SRC"
fi
cd /usr/src

即使我不在脚本上使用 -d,它仍然会像在 Debug模式下一样运行。知道为什么吗?

最佳答案

这个 if [ $DEBUG=="YES"];那么 是不正确的。 == 两边需要空格。

像这样 if [ $DEBUG == "YES"];然后

你把所有东西混在一起的方式意味着 [ 只看到 一个 参数和 [/test< 的一个参数 被解释为 [ -n word ] 正在测试非空字符串(==YES$ 的值无关DEBUG 是。

综上所述,您没有在任何地方使用 -d 的参数,您可能应该选择 false/true 之一或 yes/no 作为您的配对。

关于linux - 开关不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26549558/

相关文章:

linux - 通过 SSH 在远程 shell 脚本执行中分配变量

Linux控制台脚本根据前缀获取文件大小和修改日期?

Linux bash 脚本,用于在满足条件的情况下查找并删除目录树中具有特殊字符和空格的最旧文件

windows - 跨平台文件同步工具

linux - Bash + 从行中删除空格

shell - 我怎么知道 wget 是否真的下载了一个文件?

bash - GNU Make 如何为不在同一目录中的文件制定静态模式规则?

linux - linux shell脚本中if else语句出错

bash - 后台子 shell 逐渐使用更多内存

bash - 调试 tcl 流程 - 就像 bash -