Let's say I want to print the arguments $4 till $#, how can I do this?
$# contains the number of arguments
$@ contain all the arguments as string
What i need is something like
for i in $4_till_$#; do
#do something with $i
convert $i ~/$output
done
The first 3 arguments are used as options for other things....
Thanks in advance!
Hey thanks, this worked....!
Can you explain me please what the number 5 represents here?
I mean if I need to take the arguments from $7 and next, should I do
${@:7:5}
?
Basically the parameter expansion is ${name : offset : length}. When the parameter name is that of a variable the offset and length are string related, e.g:
$ str="123andrew789"
$ echo ${str:3:6}
andrew
When it is @ offset and length refer to positional parameters. so
${@:3:5}
will pick up parameters 3-7 (if that many exist). However
${@:3}
will pick up all positional parameters after the third.
$ cat args
#!/usr/bin/env bash
echo ${#}
echo All: "$@"
echo 3 to 5: ${@:3:3}
echo 2 to $#: ${@:2}
$ bash args a b c d e f g
7
All: a b c d e f g
3 to 5: c d e
2 to 7: b c d e f g
$ bash args a b c d e f g h i j
10
All: a b c d e f g h i j
3 to 5: c d e
2 to 10: b c d e f g h i j