如何绕过BASH中的多维数组?

时间:2018-04-07 21:59:38

标签: arrays bash sorting multidimensional-array sh

我正在使用bash创建程序:

  1. 获取用户输入的人名和季度销售数字,并将它们放入单独的数组中。
  2. 然后,用户可以选择按字母顺序按名称排序,或按数字按销售数字排序。

    我需要一种方法来确保排序后每个阵列上的名称和相应的季度销售数字都在同一个索引中(因为我知道BASH不支持多维数组)

  3. 这是我用于将数据存储在数组中的代码:

    function getData() 
    {
         read -p "Number of sales people: " spAmount    
         for (( i=0; i<$spAmount; i++ ))
         do
             read -p "Please enter a sales persons name:" salesPeople[i]
             read -p "Please enter their quarterly sales: " quarterlySales[i]
         done
    }
    

    这是用于排序数组的代码(使用冒泡排序方法):

    function sortData()
    {
    for (( q = 0; q < $spAmount ; q++ ))
    do
        for (( p = $q; p < $spAmount; p++ ))
        do
            if [[ ${salesPeople[q]} > ${salesPeople[$p]} ]]
            then
                r=${salesPeople[q]}
                salesPeople[$q]=${salesPeople[$p]}
                salesPeople[$p]=$r
            fi
        done
    done
    
    for (( i = 0; i < $spAmount ; i++ ))
    do
        for (( j = $i; j < $spAmount; j++ ))
        do
            if [ ${quarterlySales[i]} -gt ${quarterlySales[$j]}  ]
            then
                k=${quarterlySales[i]}
                quarterlySales[$i]=${quarterlySales[$j]}
                quarterlySales[$j]=$k
            fi
        done
    done
    

    }

    我想我可以将两个输入组合成一个字符串,例如&#34; foo#bar&#34;并使用字符串命令或正则表达式来获取标签之前或之后的变量?不确定这是如何工作的。

    提前致谢。

0 个答案:

没有答案