while 循环中的许多参数 bash

to many arguments in while loop bash

我是 bashscripting 的新手,我找不到我的失败之处。

错误代码:

[: too many arguments

脚本:

i=5
while [ "${array[i]}" >= "256" ] -a [ "$i" > "0" ]; do
  array[$i]=0
  i=$(( $i - 1 ))
  array[$i]=$((${array[$i]}+1))
done

我猜你正在尝试进行一些 base 256 携带。这是经过更正和简化的脚本,并添加了一个示例:

#!/usr/bin/env bash
i=5
array=(254 255 255 255 255 256)
while [ ${array[i]} -ge 256 ] && [ $i -gt 0 ]; do
    array[i]=0
    (( i-- ))
    (( array[i]++ ))
done
echo ${array[@]}

输出:

255 0 0 0 0 0

老实说,我宁愿使用Bash的算术展开而不是测试,所以[ ${array[i]} -ge 256 ] && [ $i -gt 0 ]可以改为

(( array[i] >= 256 && i > 0 ))