Использование массива для цикла не считает элементы Bash - PullRequest
0 голосов
/ 30 января 2019

Я учусь кодировать с помощью 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 голосов
/ 30 января 2019

Замените * на @, чтобы заполнить массив элементами массива вместо того, чтобы рассматривать весь массив как один элемент:

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

* расширяется до одного слова,@ расширяется до списка слов.

...