【问题标题】:Shell script if elif usage need suggestion如果 elif 使用需要建议,则为 Shell 脚本
【发布时间】:2014-11-04 03:11:10
【问题描述】:

下面是程序

priority="P1"  
if [ $priority=="P3" ]  
then  
    altprt=l5  
elif [ $priority=="P2" ]  
then  
    altprt=l4  
elif [ $priority=="P1" ]  
then  
    altprt=l3  
fi  
echo $altprt

【问题讨论】:

  • 欢迎来到 Stack Overflow。请尽快阅读About 页面并访问描述How to Ask a Question 的链接。提供必要的详细信息,包括您的代码和相关错误(如果有),将允许这里的每个人帮助您解决您的问题。这提出了一个很好的观点你的问题是什么?
  • 运算符和操作数之间需要空格。

标签: linux shell


【解决方案1】:

如果您的问题是为什么这不起作用?答案是 (1) 你没有引用你的变量和 (2) 正如杰克曼先生指出的那样,测试构造 [ 与单个 =(3) 一起使用,您需要在测试构造周围留出空间:

priority="P1"  
if [ "$priority" = "P3" ]  
then  
    altprt=l5  
elif [ "$priority" = "P2" ]  
then  
    altprt=l4  
elif [ "$priority" = "P1" ]  
then  
    altprt=l3  
fi  
echo "$altprt"

输出:

l3

您可能还会发现使用compound expressions 可以实现更紧凑的代码并获得相同的结果:

priority="P1"  
[ "$priority" = "P3" ] && altprt=l5
[ "$priority" = "P2" ] && altprt=l4
[ "$priority" = "P1" ] && altprt=l3
echo "$altprt"

最后,你也可以使用case 来达到同样的效果:

priority="P1"  
case "$priority" in
    "P3" ) altprt=l5;;
    "P2" ) altprt=l4;;
    "P1" ) altprt=l3;;
esac
echo "$altprt"

【讨论】:

  • 很高兴我能帮上忙。如果有效,您可以通过单击答案左上角的“接受”框来“接受”答案。 Bash 是一个了不起的外壳。你可以在其中做任何事情,你可以用任何高级编程语言做任何事情。如果需要在 Linux 机器上完成,您很可能可以在 bash 中完成。花时间了解字符串解析、模式匹配和子字符串提取的细节,你会惊讶于你能做什么。
猜你喜欢
  • 1970-01-01
  • 2019-12-05
  • 2015-05-15
  • 2023-02-06
  • 2011-01-22
  • 1970-01-01
  • 1970-01-01
  • 2015-09-15
  • 2019-01-16
相关资源
最近更新 更多