#! /bin/bash me="${0##*/}" if [ $# -lt 1 ]; then echo >&2 "Usage: $me command [args]" exit 1 fi tmp=${TMPDIR-/tmp}/zz.$$ mkdir -m700 $tmp || exit 1 # --- Snarfle the arguments --- declare -a cmd declare -i i seq cmd[0]="$1"; shift i=1 seq=0 for j; do file="$1"; shift case "$file" in *.Z|*.z|*.gz) gunzip -c "$file" >$tmp/zz.$seq file=$tmp/zz.$seq seq=seq+1 ;; *.bz2) bunzip2 -c "$file" >$tmp/zz.$seq file=$tmp/zz.$seq seq=seq+1 ;; esac cmd[i]="$file" i=i+1 done # --- Run the program --- "${cmd[@]}"; stat=$? rm -rf $tmp exit $?