我的 bash 脚本的 if / then 检查结果始终为 true

我的 bash 脚本的 if / then 检查结果始终为 true

我试图编写一个 bash 脚本来处理条件切换,但每次它都会求值为 true。因此,我将其精简为这样,我得到了相同的行为,它总是回显我发送的任何参数,而不是仅在发送时回显-c

myfunc(){
if [[ $1 == "-c" ]];
  then
    echo $1
  fi
}

答案1

虽然我无法回答为什么这个结果总是为真,但我能够修复它。我最终不得不从 switch 中删除引号,从而使工作版本看起来像这样:

myfunc(){
if [[ $1 == -c ]];
  then
    echo $1
  fi
};

达斯机器人的建议是,两次比较之间只要保持引号一致就可以了,这样比较安全。

myfunc(){
if [[ "$1" == "-c" ]];
  then
    echo $1
  fi
};

相关内容