Seu ./sign
gera o código do shell, portanto, ele deve ser avaliado como tal, seja por sh
com seu sh -c
ou o shell atual com eval
:
eval "curl -v $(sign...)"
Com zsh
, você também pode interpretar apenas as citações nele (não as expansões que esse código de shell pode fazer) com:
curl -v "${(@Q)${(z)"$(sign)"}}"
Onde (z)
interpreta a citação e (Q)
remove as aspas (e (@)
entre aspas preserva os elementos vazios).
Se sign
produz "foo bar" "$(echo test)"
, o primeiro chamaria curl
com foo bar
e test
como argumentos, enquanto o segundo chamaria curl
com foo bar
e $(echo test)
como argumentos .