全体のコード
array=(11 83 8 2 100 22 67 71 24 11) length=${#array[@]} for vaule in ${array[@]}; do tmp=0 for ((i = 1; i < length; i++)); do if [ ${array[$((i - 1))]} -gt ${array[$i]} ]; then tmp=${array[$((i - 1))]} array[$((i - 1))]=${array[i]} array[i]=$tmp fi done done echo ${array[@]}
解説
forとfor inの二重ループです。
配列の要素のi-1番目とi番目を比較し、i-1番目のほうが大きかった場合値を交換します。
交換する際に一時的に値を保存しておくための変数tmpを用意します。
if [ ${array[$((i - 1))]} -gt ${array[$i]} ]; then tmp=${array[$((i - 1))]} array[$((i - 1))]=${array[i]} array[i]=$tmp fi
for文の1回目のループの時、i-1番目の要素は存在しません。
ですのでfor文のiの初期値は0ではなく1にする必要があります。
これで以上です。