#!/usr/bin/env bash # Prepend arguments from a file to a command call self=apf # Give up completely if no BASH_VERSINFO (<2.0) [ -n "$BASH_VERSINFO" ] || exit # Require at least two arguments, give usage otherwise if (($# < 2)) ; then printf >&2 '%s: Need an arguments file and a command\n' "$self" exit 2 fi # First argument is the file containing the null-delimited arguments argfile=$1 shift # Read all the null-delimited arguments from the file declare -a args while IFS= read -rd '' arg ; do args[${#args[@]}]=$arg done < "$argfile" # Next argument is the command to run cmd=$1 shift # Run the command with the retrieved arguments first, then the rest of the # command line as passed to the function command "$cmd" "${args[@]}" "$@"