Unix脚本 - 查找最小值和最大值(Bash Shell)

时间:2017-06-14 02:45:02

标签: bash shell unix scripting

我的下面的代码是作业的一部分,但是我不知道为什么它不会分配一个" 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

1 个答案:

答案 0 :(得分:1)

代码几乎可以正常运行。

  1. 由于 $ LIST 是一个数组,而不是变量,因此将read -p "Enter a set of numbers. " LIST更改为:

    read -p "Enter a set of numbers. " -a LIST

  2. $ MIN $ MAX 初始化代码向下移动5行(在for循环之前):

    MIN=
    MAX=
    

    ...并将其更改为:

    MIN=${LIST[0]}
    MAX=$MIN
    
  3. 它会起作用。测试:

    echo 3 5 6 | ./minmax.sh 
    

    输出:

    Max is: 6.
    Min is: 3.