Você pode usar backticks ou aninhamento para evitar o uso de eval.
Backticks
$ var=\'curl -s -o /dev/null -w '%{http_code}' -X POST -H \"Content-Type:application/json\" -H \"Accept:application/json\" https://www.example.com/login -d '{\"username\":\"$1\",\"password\":\"$2\"}'"\'
Aninhamento
$ var = $(curl -s -o /dev/null -w '%{http_code}' -X POST -H \"Content-Type:application/json\" -H \"Accept:application/json\" https://www.example.com/login -d '{\"username\":\"$1\",\"password\":\"$2\"}'")
O aninhamento é suportado na grande maioria dos shells e mais legível que os backticks.