I'm calling a function and I want to pass up to 100 paramters onto another function.  I do not want to pass on the first 3 params, I start with param4 being the first param for the other program.I am currently allowing for passing on up to 19 additional with$function_under_test $4 $5 $6 $7 $8 $9 ${10} ${11} ${12}   ${13} ${14} ${15} ${16} ${17} ${18} ${19}but this is not very substanable for larger sets of params.I tried  declare -a pass_on_params  for ((a=2; a<$#; a++)); do    pass_on_params+=(${@[a]})  # line 8  done  echo -> $pass_on_paramsbut I getdo_test.sh: line 8: ${@[a]}: bad substitutionFull code is:do_test () {  function_under_test=$1  line_number=$2  expected=$3  param1=$4  declare -a pass_on_params  for ((a=2; a<$#; a++)); do    pass_on_params+=(${@[a]})  done  echo ppppppppp $pass_on_params  $function_under_test $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} ${14} ${15} ${16} ${17} ${18} ${19}  if [ $result -eq $expected ]; then    printf '.'  else    printf 'F'    error_messages=$error_messagesCall to '$function_under_test $param1' failed: $result was not equal to $expected at line $line_number\n  fi}Shell is bash
How can I pass on parameters 4..99 to another function
bash;scripting;function;parameter
${@:4} works for me in bash. You can also assign to another array and do indexing on it:foo=($@)second_function ${foo[@]:4}