如果 id = s001,则执行

如果 id = s001,则执行

我的变量id删除了每个主题的名称。我对每一项都有具体的命令,所以我想说:

if [[$id = s001]]; then do something. End

if [[$id = "s002"]]; then do something else. End

诸如此类。

正确的做法是什么?多谢

答案1

解决此问题的典型方法是使用case声明:

case $id in
  (s001) do something 
         ;;
  (s002) do something else
         do something additional 
         ;;
  (s003) do something else entirely
         ;;
  (*)    do something unexpected 
         ;;
esac

这里有一些语法需要加强:

  • 我喜欢将选项放在左括号和右括号中; close-paren 是必需的,但我更喜欢视觉平衡。
  • 如果您想在列出的选项都不匹配时运行某些命令,则该(*)选项是包罗万象的。
  • 每个匹配选项的命令应以;;;结尾还有其他不太常见的结束节的选项。我还倾向于将;;' 放在单独的一行上,以便于轻松判断我已适当地结束了这些节。

答案2

正如夏勒上面所说,案件陈述非常快。否则,如果您更喜欢条件语句,您可以编写如下内容:

if [[ -n "${id}" ]]; then  
  if [[ "${id}" == "s001" ]]; then 
    echo "do something" 
  elif [[ "${id}" == "s002" ]]; then 
    echo "do something else" 
  fi
fi 

注意:-n 测​​试是为了验证 id 是否已设置,这样比较就不会出错。这是一个条件包装器,以避免重新评估。

相关内容