Como testar comandos desconhecidos no shell script?

1

Eu gostaria de saber, se existe uma maneira de passar por um script de shell e receber um aviso para cada comando, isso é desconhecido.

Eu sei bash -n para verificação de sintaxe, mas não me diz, se existem comandos, que não estão disponíveis.

Executar o código não é uma opção, é claro.

    
por Minix 26.11.2014 / 15:26

3 respostas

3

Não é possível, em geral, porque um script pode conter algo como

read $command
"$command" -rf /

Na vida real, o comando seria higienizado ou escolhido de uma lista, mas ainda assim, não é possível saber com antecedência quais comandos são possíveis.

    
por 26.11.2014 / 15:47
1

Tente fazer isso explicitamente:

test_apps="command1 command2 command3"
for cmd in $test_apps; do
    type &>/dev/null $cmd && echo "$cmd installed" ||
        echo >&2 "$cmd not installed"
done

Ou se você colocar seus comandos com PATHs completos:

grep -oP '^\s*/.*/\K.*' script.sh |
    xargs -I% which % 2>&1 |
    grep -oP '^\w+:\s+\Kno\s+\S+'
    
por 26.11.2014 / 15:46
1

Eu costumo fazer algo assim:

if ! which dos2unix > /dev/null; then

   echo "Error: dos2unix not installed!"
   exit 1
fi
    
por 26.11.2014 / 19:40