Acho que você está enfrentando problemas semânticos com exatamente o que conta como argumento.
As opções são, no nível da linha de comando, argumentos que o comando trata especialmente. (Mais especificamente: eles são incluídos no array argv passado para o comando.) Então, dependendo exatamente do significado de "argumento", eles podem ou não ser incluídos na contagem. Eu suspeito que eles estão sendo incluídos, mas que o segundo "porco" não é (porque é o nome do comando, que não é um argumento) (bem, ok, ele está incluído no argv também, mas não conta) (principalmente).
Para ilustrar o que quero dizer sobre as opções serem argumentos especialmente tratados (e a arbitrariedade da distinção), considere o seguinte comando:
tar cv -f foo.tar bar
-
tar
é o comando -
cv
é duas opções (criar e verboso). Eu sei que não parece, mastar
antecede o uso consistente de-
para introduzir opções, e tratará seu primeiro "argumento" como uma ou mais opções, mesmo que não comece com-
-
-f foo.tar
é outra opção e o argumento its (que é diferente de um argumento de comando geral) -
bar
é um argumento de comando normal (finalmente!)
Observe que esses comandos são equivalentes ao acima:
tar cvf foo.tar bar
tar cv -ffoo.tar bar