我的下面的代码是作业的一部分,但是我不知道为什么它不会分配一个" MIN"值。我尝试将MIN和MAX分配给$ {LIST [0]}只是为了得到第一个索引,但它返回整个数组,这对我来说没有意义。我在CentOS VM上执行此操作(我无法看到它有所作为)。我知道第一个和第二个的开始" if"语句需要更好的逻辑,但我更关心MIN和MAX输出。
#!/bin/bash
LIST=()
read -p "Enter a set of numbers. " LIST
MIN=
MAX=
if [ ${#LIST[*]} == 0 ]; then echo "More numbers are needed."; fi
if [ ${#LIST[@]} -gt 0 ]; then
for i in ${LIST[@]}; do
if [[ $i -gt $MAX ]]; then
MAX=$i
fi
if [[ $i -lt $MIN ]]; then
MIN=$i
fi
done
echo Max is: $MAX.
echo Min is: $MIN.
fi
答案 0 :(得分:1)
代码几乎可以正常运行。
由于 $ LIST 是一个数组,而不是变量,因此将read -p "Enter a set of numbers. " LIST
更改为:
read -p "Enter a set of numbers. " -a LIST
将 $ MIN 和 $ MAX 初始化代码向下移动5行(在for
循环之前):
MIN=
MAX=
...并将其更改为:
MIN=${LIST[0]}
MAX=$MIN
它会起作用。测试:
echo 3 5 6 | ./minmax.sh
输出:
Max is: 6.
Min is: 3.