Consider the array foo
, initialized like this:
$ foo=( a b '' d e f g )
foo
contains 7 elements, one of which is an empty string.
Below are a few ways to print out the contents of foo
, using the print
built-in:
$ print -rl -- $foo a b d e f g $ print -rl -- "$foo" a b d e f g $ print -rl -- $foo[@] a b d e f g $ print -rl -- "$foo[@]" a b d e f g
Note that only the form whose last token is "$foo[@]"
interprets it as 7 separate arguments.
Now, suppose that I wanted to use print -rl -- ...
to display only the first 5 elements of foo
, one element per line?
This won't work:
$ print -rl -- "$foo[1,5]" a b d e
Nor this:
$ print -rl -- $foo[1,5] a b d e
I've tried other variants, but they all fail to produce the desired output, namely
a b d e
What's the slice-equivalent of the full "$foo[@]"
?
If no such equivalent exists, how do I create an array bar
consisting of the first 5 elements of foo
?