Dar os argumentos de uma matriz é fácil, "${array[@]}" se expande para as entradas da matriz como palavras distintas (argumentos). Nós só precisamos adicionar os -t flags. Para fazer isso, podemos fazer o loop da primeira matriz e construir outra matriz para a lista completa de argumentos, adicionando as -t flags à medida que avançamos:
#!/bin/bash
tabs=("first tab" "second tab")
args=()
for t in "${tabs[@]}" ; do
args+=(-t "$t")
done
app "${args[@]}"
Use "$@" em vez de "${tabs[@]}" para obter os argumentos da linha de comando do script em vez de uma lista codificada.