Existem dois elementos para uma solução melhor:
-
shift
- (mais) citando
Defina a função usando shift
, assim:
function build {
local cc="$1"
local cflags="$2"
shift 2
make CC="$cc" CFLAGS="$cflags" "$@"
}
onde salvamos os dois primeiros parâmetros para as variáveis locais e, em seguida, deslocamos toda a matriz de argumentos por dois; também, cite a expansão "$ @".
Depois, chame-o com aspas extras, assim:
build gcc "XXX" 'VAR1="a b" VAR2="c=A d=B"' 'LDFLAGS="-L/opt/lib -lm"'
onde as aspas simples protegem os argumentos extras na função; caso contrário, o shell removerá as aspas e você ficaria com VAR2=c=A d=B
(sem aspas) na função.