bash - 如果条件避免每次在 bash 中写入 `-le 100`,我该如何组合这些 &&?
问题描述
我想写一个 bash 脚本,包含 5 个科目的分数,分数不能大于 100。如何避免-le 100
每次都输入。
while true
do
echo "enter marks of 5 subjects"
read m1 m2 m3 m4 m5
if [ $m1 -le 100 ] && [ $m2 -le 100 ] && [ $m3 -le 100 ] && [ $m4 -le 100 ] && [ $m5 -le 100 ]
then
break
else
echo "marks cannot be more than 100"
fi
done
解决方案
我怎样才能避免每次都输入 -le 100 。
好吧,您可以输入其他内容:
test_lower_equal_100() { [ "$1" -le 100 ]; }
if test_lower_equal_100 "$m1" && test_lower_equal_100 "$m2" && test_lower_equal_100 "$m3" && test_lower_equal_100 "$m4" && test_lower_equal_100 "$m5"
您可以迭代变量名称:
for i in m1 m2 m3 m4 m5; do
if [ "${!i}" -le 100 ]; then
echo "mark $i is lower or equal to 100"
fi
done
或循环值:
for i in "$m1" "$m2" "$m3" "$m4" "$m5"; do
if [ "$i" -le 100 ]; then
echo "value $i is lower or equal to 100"
fi
done
我会保留代码原样,因为它既冗长又可读且可维护。我会引用变量,添加-r
并read
使用 bash 算术扩展if ((m1 <= 100 && m2 <= 100 && m3 <= 100 && m4 <= 100 && m5 <= 100)); then
。
推荐阅读
- c++ - Is it possible to create a variadic template function with a few parameters being non-variadic?
- python - 下面代码的输入形状应该是什么
- r - 如果另一个较小数据框中的该键的值满足特定条件,则更改 R 数据框中的值
- python - sagemaker 水平缩放张量流(keras)模型
- python - 1005 (HY000): 无法创建表
- mysql - SQL - 聚合函数 - 误用 COUNT 函数
- python - 根据列的子集过滤数据框
- arrays - 如何使用 Lua 读取数据的文本文件并将其存储为多维数组
- javascript - 滑块仅在第一次移动
- reactjs - 更新 Ionic 后所有页面都没有看到