如何使用 $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
}

请完整发布您的“冒泡排序”脚本,或澄清您的问题。

相关内容