1
my_interface_nr=();
for container in $(sudo docker ps -q); do 
  # show the name of the container
  sudo docker inspect --format='{{.Name}}' $container;
  # run the command (date in the case)
  sudo docker exec -it $container cat /sys/class/net/eth1/iflink;
  my_interface_nr+=( "$(sudo docker exec -it $container cat /sys/class/net/eth1/iflink)" );
  # my_interface_nr+=( "new" );
done
echo "------------ARRAY TEST -----------------"
echo "${my_interface_nr[@]}"
echo "${my_interface_nr[*]}"
echo "------------INDICES OF ARRAY-----------" 
echo "${!my_interface_nr[@]}"

echo "------------SIZE OF ARRAY--------------" 
echo "${#my_interface_nr[@]}" 
echo "------------ELEMENTS OF ARRAY----------" 

echo "${my_interface_nr[0]}"
echo "${my_interface_nr[1]}"
echo "${my_interface_nr[2]}"
echo "${my_interface_nr[3]}"
echo "${my_interface_nr[4]}"

I have code like above. I don't know why 'echo "${my_interface_nr[@]}"' doesn't show me all elements of array. I got result:

/a3
74
/a2
68
/a1
60
------------ARRAY TEST -----------------
 60
 60
------------INDICES OF ARRAY-----------
0 1 2
------------SIZE OF ARRAY--------------
3
------------ELEMENTS OF ARRAY----------
74
68
60

Wnen delete line 'my_interface_nr+=( "$(sudo docker exec -it $container cat /sys/class/net/eth1/iflink)" );' and instead of uncomment line 'my_interface_nr+=( "new" );' I have expected result.

arek121281
  • 48
  • 5
  • 1
    Please post the output of `declare -p my_interface_nr`. I guess: you have dos line endings. – KamilCuk Sep 18 '21 at 17:58
  • Thanks for [including complete errors](https://meta.stackoverflow.com/questions/359146/why-should-i-post-complete-errors-why-isnt-the-message-itself-enough)! The clue is in the leading space before the "60" in the "ARRAY TEST" section, hinting that it tries to show `74\r 68\r 60\r\n`. You are getting carriage returns in the data because you added `-t` to docker. – that other guy Sep 18 '21 at 18:04

0 Answers0