Você precisa de getopts. getopts é uma biblioteca projetada para manipular argumentos de linha de comando para você e está geralmente disponível em vários idiomas. No bash, você usa assim:
Isso é emprestado de um tutorial que encontrei :
From="/home/elg19/lone/doc"
To="/home/elg19/documents"
while getopts "d:" optionName; do
case "$optionName" in
d) To="$OPTARG";;
[?]) exit 255;;
esac
done
[[ -d "$To" ]] || exit 255
cd "$From"
for i in pdf txt doc; do
find . -type f -name "*.${i}" -exec mv "{}" "$To" \;
done
Isso não foi testado, mas basicamente é apenas o seu script com a opção de substituir o argumento "$ To" por getopts.
O bit [?] diz para sair se alguma opção não reconhecida for encontrada.