Pergunta inicial do script de shell

1

Eu sou novo em scripts de shell. Estou tentando criar um script que me enviará um email se tivermos atualizações para o Git. Eu suponho que existem várias maneiras mais fáceis / difíceis de fazer isso. Além disso, notei que não há cores de destaque para o texto, todo o texto é a cor padrão. Eu pensei que o texto, dependendo se é uma variável ou em uma função, seria um texto de cor diferente.

#!/bin/bash
email="my_email@my_domain"
var="yum list available git"

if ["$var"]
then
echo $var | mail -s "Gitlab Updates" $email
fi

Quando executo o comando para um teste, obtenho o seguinte:

./testEmail.sh: line 6: [yum list available git]: command not found

Eu suponho que estou fazendo várias coisas erradas aqui, gostaria apenas de um script limpo e simples para me enviar um email quando tivermos atualizações do Git.

Distro - Fedora 20

Qualquer ajuda, por favor?

    
por Marc 25.10.2017 / 17:12

4 respostas

0

Em primeiro lugar, a saída de $ var é apenas isso (yum list available git), não é o resultado do comando. Para poder ter $ var contém um comando você tem que defini-lo assim:

var=$(yum list available git)

a condição se [[$ var]] não diz mais do que se $ var existir. Portanto, não compara a saída de $ var a nada. Assim, seu script deve ser parecido com isto:

#!/bin/bash
email="my_email@my_domain"
var="yum list available git | grep git | wc -l"

if [ $var -ge 1 ]; then
    echo "Git updates available" | mail -s "Gitlab Updates" $email
fi
    
por 25.10.2017 / 17:41
0
#!/bin/bash
export PATH=$PATH

email="my_email@my_domain"
var=$(yum list available git)

if [ "$var" ] 
then
echo $var | mail -s "Gitlab Updates" $email
fi

Este script funcionou para mim.

    
por 25.10.2017 / 17:59
-1

Você tem que exportar seu $ PATH dentro do script:

#!/bin/bash
export PATH=$PATH

email="my_email@my_domain"
var="yum list available git"

if [ "$var" ] ##I added spaces before the first and after the last quotes. 
then
echo $var | mail -s "Gitlab Updates" $email
fi

Depois de fazer isso, consegui que o script funcionasse em uma VM do Fedora 20.

    
por 25.10.2017 / 17:35
-1

#!/bin/bash email="my_email@my_domain" var="yum list available git" [[ $($var) ]] && echo $var|mailx -s "Gitlab Updates" $email

    
por 26.10.2017 / 02:06