我应该使用case语句还是if/else语句



我正在unix中制作一个脚本,该脚本将读取一个文本文件,每条记录都有六个由管道分隔的字段。我不知道应该使用case语句还是if/else语句。

  • 如果$JOB的值为P,则NEW_NICE应设置为3
  • 如果$JOB具有值S,则NEW_NICE应当被设置为6
  • $JOB的所有其他值应将NEW_NICE设置为7

我有点想使用case语句,因为它会更简单,但我也不确定它会是什么样子。

我不会告诉您使用哪一个,因为这是一个偏好问题。两者都可以。让我们做一些比较购物,这样你就可以并排看到它们。

(最好避免所有大写的变量名,以免与shell的任何内置变量发生冲突,这些变量总是大写的。我在下面使用jobnew_nice。(

以下是case语句的外观。使用*)作为默认情况。

case "$job" in
P) new_nice=3;;
S) new_nice=6;;
*) new_nice=7;;
esac

这里有两个版本的if语句。在Bash中,您可以使用双括号来避免引用"$job":

#!/bin/bash
if [[ $job == 'P' ]]; then
new_nice=3
elif [[ $job == 'S' ]]; then
new_nice=6
else
new_nice=7
fi

如果你的目标是纯sh,那么你必须使用单括号并引用"$job"

如果看起来更好的话,您也可以将else机箱向上移动。如果7是默认值,而36是不太常见的覆盖,那就太好了。

#!/bin/sh
new_nice=7
if [ "$job" = 'P' ]; then
new_nice=3
elif [ "$job" = 'S' ]; then
new_nice=6
fi

相关内容

  • 没有找到相关文章

最新更新