如何使用 $1 - 1 個週期進行 for 迴圈

如何使用 $1 - 1 個週期進行 for 迴圈

我正在嘗試製作 sh 腳本,它使用“sed”來製作冒泡排序演算法

我很苦惱,如何製作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
}

請完整發佈您的「冒泡排序」腳本,或澄清您的問題。

相關內容