10.3.4 sortArray(配列のデータのソート)
形式
sortArray [-d 要素番号] [-n] [-r] 配列名1 配列名2
機能
引数に指定された配列の値をソートします。値に含まれる文字の大文字と小文字は区別されます。
引数
- -d 要素番号
-
指定した要素番号に対応する2次元配列の値をソートします。2次元配列のすべての要素の値をソートする場合は,要素番号に「@」を指定します。「@」を指定すると,2次元配列の1つ目の要素番号に対応する各配列内で要素の値をソートします。例えば,2×3の2次元配列arrayの場合,array[0][0]とarray[0][1]とarray[0][2]の間で要素の値をソートし,array[1][0]とarray[1][1]とarray[1][2]の間で要素の値をソートします。
このオプションを指定しない場合,配列を1次元配列と解釈してソートします。
- -n
-
先頭の数値文字列を数値と解釈してソートします。
- -r
-
降順にソートします。
このオプションを指定しない場合,昇順にソートします。
- 配列名1
-
ソート対象の配列名を指定します。
- 配列名2
-
ソートしたデータを格納する配列名を指定します。
標準出力への出力
なし
終了コード
終了コード |
意味 |
---|---|
0 |
正常終了 |
1以上 |
エラー終了 |
注意事項
-
ソート対象の配列の値に改行が含まれていると,正しくソートされません。
-
ソート対象の配列に値を持たない要素が含まれていると,その要素は削除されてソートされます。
-
引数の要素番号には「@」または0から65535までの数値を指定できますが,指定できる文字列かどうかのチェックはしません。
-
引数の配列名1配列名2に「adsh」から始まる配列名を指定しないでください。指定すると,部品内部で使用している変数の名称と重複し,不当な出力結果となることがあります。
-
引数の配列名1と配列名2に指定できる文字列は,変数名として使用できる文字列と同じですが,指定できる文字列かどうかのチェックはしません。
使用例
set -A input Tokyo Yokohama Fukuoka Nagoya sortArray input output echo "${output[@]}" # 「Fukuoka Nagoya Tokyo Yokohama」が出力される。 set -A input Tokyo Yokohama Fukuoka Nagoya sortArray -r input output echo "${output[@]}" # 「Yokohama Tokyo Nagoya Fukuoka」が出力される。 set -A input -- -3 70 -50 8 100 sortArray -n input output echo "${output[@]}" # 「-50 -3 8 70 100」が出力される。 set -D input { Osaka Fukuoka Nagoya } { Tokyo Yokohama Chiba } sortArray -d 1 input output echo "${output[0][@]}" # 「Osaka Fukuoka Nagoya」が出力される。 echo "${output[1][@]}" # 「Chiba Tokyo Yokohama」が出力される。 set -D input { Osaka Fukuoka Nagoya } { Tokyo Yokohama Chiba } sortArray -d @ input output echo "${output[0][@]}" # 「Fukuoka Nagoya Osaka」が出力される。 echo "${output[1][@]}" # 「Chiba Tokyo Yokohama」が出力される。