感谢 tldp 提供的 Bash-Beginners-Guide,我目前正在学习 shell。
目前我正在做一些练习来提高我的 Shell 脚本技能,在这种情况下,我正在学习如何使用 if 和 case 语句。
我已经编写了一些代码,想知道是否可以直接在 case 表达式中使用算术表达式,而无需像我在代码中那样事先设置变量。
请注意,我不想为自己分配的“作业”提供解决方案,而是希望获得有关 Shell 语法基础的启发。
代码,免费使用:
echo "Starting exercise 2..."
day=`date +%e`
year=`date +%Y`
echo "Number of days in this month: $day days"
echo "Calculating leap years:"
calc1=$[$year % 400]
case $calc1 in
0) echo "$leap";;
*)
calc2=$[$year % 100]
case $calc2 in
0) echo "$noleap" ;;
*)
calc3=$[$year % 4]
case $calc3 in
0) echo "$leap" ;;
*) echo "$noleap" ;;
esac
esac
jump 和 noleap 只是一些字符串,它们对我的问题无关紧要。
我想摆脱那些 calc* 变量并执行以下操作:
case $[$year % 400] in
0) echo "$noleap";;
...
这可能吗?
请注意,我是一个绝对的初学者,我 2 天前开始学习 Shell。
编辑:我想我回答了我自己的问题。好像
case $[arithmetic expression] in
作品。然而,还需要验证。
Edit2:修复了不相关的错误 noleap -> year%400 情况下的跳跃。