2016-09-21 11 views
0

この課題の作業。Bashの位置パラメータコマンドラインのソートの問題

コマンドラインパラメータのリストを昇順でソートするBashスクリプトinsert-sort.shを作成します。たとえば、コマンドは次のようになります。 $ insert-sort.sh 7 2 3 9 -1と入力してEnterキーを押します。 あなたのプログラムが返されます:-1 2 3 7 9

これは私がスクリプトをテストしようとしたとき、私は、これまで

array=(); 
for param in "[email protected]"; do 
    if [ -z "$array" ]; then 
     array[0]="$param";  
    else 
     array[param]="$param"; 
    fi 
done 
echo ${array[@]} 

問題を抱えている、私は一貫性のない答えを得るものです。ソートされていないときにソートされます。例えば

私は'/././BASH/insert-sort.sh' 1 3 2を実行した場合、私は'/././BASH/insert-sort.sh' 4 2 3を実行する場合、私は最初のパラメータが正しくソートされていない4 2 3

答えて

1

を得る1 2 3

を取得します。その値にかかわらず常にインデックス0に割り当てています。お互いに$paramがパラメタのスロットに入ります。

+0

はい、わかります。しかし、3 2は最初に2 3にソートされ、2回目にソートされません。返信btwありがとう。 – itproxti

+1

_ "このスクリプトには何も並べていません。" _ JohnKugelmanの修正では、コードはソートを行います。それがbash配列の仕組みです。 (ただし、負の数では機能しません)。 – John1024