使用for循环的数组不计算元素Bash

时间:2019-01-30 16:54:22

标签: arrays linux bash shell loops

我正在学习使用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

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

预先感谢

1 个答案:

答案 0 :(得分:4)

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

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

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