我编写了以下Nagios检查,检查/etc/fstab
是否有挂载,并使用df
检查是否正确安装:
#!/bin/bash
# Check mounts based on /etc/fstab
grep="/bin/grep"
awk="/bin/awk"
df="/bin/df"
mounts=$($grep nfs /etc/fstab | $awk '{print $2}')
# Check if mounts exist
for mount in $mounts; do
$df | $grep $mount &>/dev/null
if [ "$?" -eq "0" ]; then
msg="Mount $mount is mounted!"
else
msg="Mount $mount is not mounted!"
fi
echo $msg
done
当我运行检查时,它会返回一个正确的结果:
[root@nyproxy5 ~]# ./check_mount.sh
Mount /proxy_logs is mounted!
Mount /proxy_dump is mounted!
Mount /sync_logs is mounted!
[root@nyproxy5 ~]#
但我希望脚本的输出为1行而不是3行,如何实现呢? 我意识到目前编写脚本的方式是不允许的,即使是" Mount X已安装"消息应该改变,但我对逻辑很难。
提前致谢
答案 0 :(得分:1)
将echo $msg
更改为echo -n $msg
-n
选项将避免打印换行符
答案 1 :(得分:0)
在一些复杂的命令的情况下有一个通用的解决方案。可以通过这种方式删除换行符或任何其他字符:
./script.sh | tr -d '\n'
或者cygwin中的win32可执行文件:
./asd.exe | tr -d '\r\n'