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 ))
我是 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 ))