forループで$ 1 - 1期間を使用する方法

forループで$ 1 - 1期間を使用する方法

バブルソートアルゴリズムを作成するために「sed」を使用するshスクリプトを作成しようとしています。

forループの作り方はとても悩んでいます。

for n in $1
do
   echo $n
done

ループのみを生成するようにforループの本文をどのように変更できますかn-1?私はこれを試しましたが、$1-1うまくいきません。文字列の一部と-1を印刷します。

答え1

n-1サイクル最後の項目を考慮しないでください。

次のアプローチを使用してください(入力パラメータが常にスペースで区切られた一連のサブストリングであると仮定)。

s=$1

for n in ${s:0:-2}
do 
    echo $n 
done

${s:0:-2}- 最後の項目を除くすべての項目を含む項目の断片

    ^  ^
    |  | 
  from to

答え2

使用 for i in "$@" ; do echo $i ; done

$ 1を引用する必要もなく、必要もありません。

編集:私は誤解しました。 $1-1を印刷したい場合は、echo $(( $i-1 )) i-1回繰り返す場合は、次の修正を使用してください。

for ((i=1; i<=3; i++))
{
  echo $x
}

「バブルソート」スクリプト全体を投稿するか、質問を明確にしてください。

関連情報