sh
que usam os argumentos na linha de comando geralmente contêm $1
, $2
, $3
etc. ou $@
ou $*
ou combinações dos mesmos. No entanto, isso não é necessário nem suficiente!
Isso ajusta o script e retorna todas as linhas que contêm esses tipos de strings:
grep '\$[1-9@*]' script.sh
Você pode obter falsos positivos de scripts que não usam argumentos de linha de comando, mas que contêm funções que recebem argumentos ou scripts que simplesmente contêm esses caracteres em cadeias de caracteres não avaliadas. Se o script contiver chamadas para awk
, por exemplo, elas também poderão conter $1
etc., que não se referem aos argumentos de linha de comando do próprio script.
Você também pode procurar a string getopt
no script para ver se o script usa getopt
ou getopts
para fazer a análise adequada da linha de comando.
Capturar os casos em que os argumentos da linha de comando podem ser usados implicitamente é um pouco mais difícil. Isso acontece, por exemplo, com for variablename; do ... done
ou select variablename; do ... done
. Mas se o script usou set
para preencher os parâmetros posicionais explicitamente, isso não afeta nenhum argumento da linha de comando. Inspeção visual do script pode ser necessária para resolver isso.
Na "vida real", lê-se a documentação que o acompanha. Se por alguma estranha razão isso não estiver disponível, leia o código.