这里是脚本的内容:
#!/bin/bash
DISKREPORT="$(df -hl | grep -vE 'boot|shm' | column -t)"
mail -s "$HOSTNAME Disk Usage Report: $diskreport" myemail@mydomain.com
当我打电话给它时,脚本会挂起,好像等待其他事情发生一样。我做错了什么?
编辑:这是我最终得到的,感谢您的帮助:
#!/bin/bash
#set -x
DISKREPORT=$(df -hl | grep -vE 'boot|shm' | column -t | cut -f5 --complement)
mail -s "$HOSTNAME Disk Usage Report" jsc-dl-agdl-admin@mail.nasa.gov << EOF
$DISKREPORT
EOF
答案 0 :(得分:2)
您的'mail'命令正在等待邮件正文的stdin(有关详细信息,请参阅here)。您可以使用heredoc例如
来输入身体$ mail -s "My subject" <<EOF
My
mail
body
here
EOF
另请注意,DISKREPORT
是以大写字母定义的,但您稍后会使用小写引用它,在bash的世界中它是一个不同的变量!
答案 1 :(得分:1)
您在代码中使用了未定义的变量$diskreport
(和,正如另一位用户指出的那样,mail
将等待输入),但除此之外,你不是更愿意在消息的正文中提供报告吗?
df -hl | grep -vE 'boot|shm' | column -t | mail -s report myemail@mydomain.com