将df存储在变量中不起作用

时间:2016-06-16 15:46:58

标签: linux bash

这里是脚本的内容:

#!/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

2 个答案:

答案 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