bash - bash 脚本。有没有办法缩短我的代码?
问题描述
这是一个计算器代码,它可以为您提供文字结果。我使用了很多 if 条件。我打算用最多 30 的数字来做。有没有办法缩短它?
#! bin/bash
while true; do
read -p "First number: " n1
read -p "Second number: " n2
PS3="what's the operation? "
select ans in add subtract multiply divide; do
case $ans in
add) op='+' ; break ;;
subtract) op='-' ; break ;;
multiply) op='*' ; break ;;
divide) op='/' ; break ;;
*) echo "invalid response" ;;
esac
done
ans=$(echo "$n1 $op $n2" | bc -l)
if [ $ans == 1 ] ; then
printf "%s %s %s = one \n\n" "$n1" "$op" "$n2"
elif [ $ans == 2 ] ; then
printf "%s %s %s = two \n\n" "$n1" "$op" "$n2";
elif [ $ans == 3 ] ; then
printf "%s %s %s = three \n\n" "$n1" "$op" "$n2";
elif [ $ans == 4 ] ; then
printf "%s %s %s = four \n\n" "$n1" "$op" "$n2";
elif [ $ans == 5 ] ; then
printf "%s %s %s = five \n\n" "$n1" "$op" "$n2";
elif [ $ans == 6 ] ; then
printf "%s %s %s = six \n\n" "$n1" "$op" "$n2";
elif [ $ans == 7] ; then
printf "%s %s %s = seven \n\n" "$n1" "$op" "$n2";
elif [ $ans == 8] ; then
printf "%s %s %s = eight \n\n" "$n1" "$op" "$n2";
elif [ $ans == 9] ; then
printf "%s %s %s = nine \n\n" "$n1" "$op" "$n2";
elif [ $ans == 10] ; then
printf "%s %s %s = ten \n\n" "$n1" "$op" "$n2";
fi
解决方案
您可以使用数组:
#!/bin/bash
while true; do
read -p "First number: " n1
read -p "Second number: " n2
PS3="what's the operation? "
select ans in add subtract multiply divide; do
case $ans in
add) op='+' ; break ;;
subtract) op='-' ; break ;;
multiply) op='*' ; break ;;
divide) op='/' ; break ;;
*) echo "invalid response" ;;
esac
done
ans=$(echo "$n1 $op $n2" | bc -l)
res=(zero one two three four five six seven eight nine ten eleven)
printf "%s %s %s = ${res[ans]} \n\n" "$n1" "$op" "$n2"
done
由于原始代码没有显示错误检查,因此我也将其省略(作为练习,像往常一样)。
推荐阅读
- spring - Tomcat 中的最大请求 URI 长度是多少以及如何配置它?
- java - 如何修复我的单元测试课程中的错误?
- swift - GKMinmaxStrategist - 不适用于开始移动(Swift 4)
- angular - ng-pick-datetime 日期选择器格式
- c# - 无论.NET Core HttpClient中的有效性如何,如何允许所有https?
- javascript - 将移动菜单默认状态从关闭更改为展开
- python - Python中的Json编码器期望值错误
- python - QCalendarWidget 弹出窗口打开时发出信号?
- facebook-graph-api - 如何获取评论,使用图形 API 在 Facebook 页面上发布评论
- java-9 - Java 平台模块系统 - 保护点是什么?