我有以下脚本来检查服务器上当前是否挂载了NFS挂载:
#!/bin/bash
$targetserver=192.168.3.1
commandline="mount | grep '$targetserver' | wc -l"
checkmount=`$commandline`
if [ $checkmount == "1" ]; then
echo "Mounted !"
else
echo "Not mounted"
fi
但似乎我的checkmount没有返回任何东西。
我在这里缺少什么?
答案 0 :(得分:10)
这应该会更好。
#!/bin/bash
targetserver="192.168.3.1"
commandline=$(mount | grep "$targetserver" | wc -l)
if [ $commandline -gt 0 ]; then
echo "Mounted !"
else
echo "Not mounted"
fi
您可以使用$?
重定向和控制运算符来缩短它。
targetserver="192.168.3.1"
mount | grep "$targetserver" > /dev/null && echo "mounted" || echo "not mounted"
直接取决于系统grep /etc/mtab
可能也是一个好主意。不必执行mount
将是更清洁的imho。
干杯!
答案 1 :(得分:3)
如果您只是在一个地方使用它,我可能会直接在if
中执行此功能,或者直接使用该功能的内容。
nfsismounted() {
mount | grep -qm1 "$1":
}
q = quiet(我们只想要返回码),m1 =在第一场比赛时退出。
并按原样使用:
if nfsismounted 192.168.0.40; then
echo "Mounts found"
else
echo "Not mounts"
fi
关于你问题中代码的附注,你不要在shell中使用==进行测试,只需=。 ==会在Debian / Ubuntu中破解,例如,破坏/ / bin / sh。
编辑:为了增加可移植性(非GNU grep),请删除 grep 和> /dev/null
上的标记。测试是在bash / dash / ksh