我正在尝试创建一个脚本,如果有任何 Git 更新,它会通过电子邮件发送给我。我认为有几种更简单/更困难的方法可以做到这一点。另外,我注意到文本没有突出显示颜色,所有文本都是默认颜色。我认为文本,取决于它是变量还是在函数中,将是不同颜色的文本。
#!/bin/bash
email="my_email@my_domain"
var="yum list available git"
if ["$var"]
then
echo $var | mail -s "Gitlab Updates" $email
fi
当我运行命令进行测试时,我得到以下信息:
./testEmail.sh: line 6: [yum list available git]: command not found
我假设我在这里做错了很多事情,我只想要一个干净简单的脚本,当我们有 Git 更新时通过电子邮件给我发送。
发行版 - Fedora 20
答案1
首先,$var 的输出只是(yum list available git),它不是命令的结果。要让 $var 包含命令,您必须像这样定义它:
var=$(yum list available git)
if [[ $var ]] 的条件并不比 if $var 存在更多。因此它不会将 $var 的输出与任何内容进行比较。因此你的脚本应该看起来像这样:
#!/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
答案2
#!/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
这个脚本对我有用。
答案3
您必须在脚本中导出 $PATH:
#!/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
完成此操作后,我能够让脚本在 Fedora 20 VM 上运行。
答案4
#!/bin/bash email="my_email@my_domain" var="yum list available git" [[ $($var) ]] && echo $var|mailx -s "Gitlab Updates" $email