As documentation states, the -s
passes all parameters supplied as just one list of atoms and -run
does the same but as a list of strings. If you want to call arbitrary function with arbitrary parameter count and types you should use -eval
:
$ erl -noshell -eval 'io:format("test\n",[]),init:stop()'
test
$