我正在unix中制作一个脚本,该脚本将读取一个文本文件,每条记录都有六个由管道分隔的字段。我不知道应该使用case语句还是if/else语句。
- 如果
$JOB
的值为P
,则NEW_NICE
应设置为3
- 如果
$JOB
具有值S
,则NEW_NICE
应当被设置为6
$JOB
的所有其他值应将NEW_NICE
设置为7
我有点想使用case语句,因为它会更简单,但我也不确定它会是什么样子。
我不会告诉您使用哪一个,因为这是一个偏好问题。两者都可以。让我们做一些比较购物,这样你就可以并排看到它们。
(最好避免所有大写的变量名,以免与shell的任何内置变量发生冲突,这些变量总是大写的。我在下面使用job
和new_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
是默认值,而3
和6
是不太常见的覆盖,那就太好了。
#!/bin/sh
new_nice=7
if [ "$job" = 'P' ]; then
new_nice=3
elif [ "$job" = 'S' ]; then
new_nice=6
fi