Coloque os argumentos em uma matriz e use substituição de padrões bash neles com substituição de matriz e correspondência de prefixo:
ARGS=("$@")
echo ${ARGS[@]/#/-p }
Isso substitui o início de cada argumento com -p<space>
.
Infelizmente, isso não funciona corretamente se você tiver espaços em seus argumentos. Os espaços são preservados corretamente com ARGS=("$@")
, mas não quando você faz a expansão ${ARGS[@]/#/-p }
. Você pode colocar aspas duplas nessa expansão, mas você obtém -p arg1
como um único argumento, não dois argumentos.
Se você não precisa de -p<space>
prefixado, apenas -p
, então colocar aspas duplas em torno da expansão deve funcionar bem. Experimente com e sem aspas duplas em torno da expansão para ver o que funciona melhor para você.