首页 > 解决方案 > 使用 for 循环的数组不计算元素 Bash

问题描述

我正在学习用 bash 编码,我想将十进制数转换为二进制数组,问题是我无法计算数组中元素的数量。

我的代码是:

read -p 'Ingrese primer numero: ' numero_1

function binario(){
 num=$1
 arr1=()
 i=0
 while [ $num -ne 0 ]
 do
  div=$(($num/2))
  rem=$(($num%2))
  num=$div
  arr1=("$rem" "${arr1[*]}")
  echo ${arr1[*]}
 done
 echo "array 1 es ${arr1[*]}"
 echo "largo dentro de la funcion ${#arr1[*]}"
}
binario $numero_1

计数不起作用。在我的控制台中,我获得了以下信息:

Ingrese primer numero: 56
array 1 es 1 1 1 0 0 0
largo dentro de la funcion 1

我知道我做错了什么,但我不知道是什么,你能帮帮我吗?

提前致谢

标签: arrayslinuxbashshellloops

解决方案


将 替换为*a@以使用数组的元素填充数组,而不是将整个数组视为一个元素:

- arr1=("$rem" "${arr1[*]}")
+ arr1=("$rem" "${arr1[@]}")

*扩展为一个单词,@扩展为单词列表。


推荐阅读