Eu pesquisei e encontrei este post: Link para o post. A partir daí, encontrei um comando que controla se o seguinte programa/ferramenta está instalado. Então eu decidi colocá-lo em uso.
#!/bin/bash
set -x
programs=$(bc nmap coreutils xmlstarlet)
if [ $(dpkg-query -W -f='${Status}' "$programs" 2>/dev/null | grep -c "ok installed") -eq 0 ];
then
apt-get update | apt-get install "$programs" -y;
fi
Estou fazendo isso corretamente? ou há algo de errado nisso?
Eu simplesmente preciso de uma maneira que eu coloque e, program/tool name
em programs variable
seguida, execute na minha máquina.
Você pode simplesmente usar o
command -v
para verificar se está instalado, o código de retorno na condição if o ajudará a instalar se ainda não estiver instaladoA opção
command -v
é compatível com POSIX. Você pode executarapt-get update
apenas uma vez e não para cada iteração do loop. Além disso, você definiuprograms
como uma variável que deveria ser uma matriz para iteração.Se você quiser sair do script apenas se algum comando estiver faltando:
Mas se você também deseja instalar os comandos ausentes:
Exemplo:
Notas: