Você precisa de uma matriz se quiser armazenar mais de um argumento:
file_in="${@: -1}"
input_params=("${@:1:$#-1}")
Ou:
file_in="${@: -1}"
input_params=("$@")
unset 'input_params[-1]'
Ou com apenas sh
de sintaxe:
n=$#
for file_in do
shift
[ "$((n = n - 1))" -gt 0 ] || break
set -- "$@" "$file_in"
done
# input_params in "$@"
(todas as variáveis maiúsculas devem ser reservadas para variáveis de ambiente).