Você deve evitar colocar comandos em variáveis .
Se houver espaços, você pode desmembrá-los assim:
ps -o pid,pcpu,cmd -C ${2// }
Isso removerá todos os espaços, portanto, se alguma das suas strings de comando contiverem espaços, isso os arruinará. Isso tira os espaços e espaços iniciais e finais dos dois lados das vírgulas:
commands=${2/# } # leading space
commands=${command/% } # trailing space
commands=${command/, /,} # spaces after commas
commands=${command/ ,/,} # spaces before commas
ps -o pid,pcpu,cmd -C "$commands"
Se você quiser retornar um erro em vez de sanear e executar a entrada, apenas faça essa remoção de espaço ou outra limpeza e verifique se o resultado é igual à entrada. Se eles não estiverem, emita um erro.