用于检查两个已安装驱动器的BASH脚本'一元运算符预期'

时间:2017-06-05 17:55:00

标签: bash shell raspberry-pi raspbian

尝试编写一个bash脚本来检查两个已安装的驱动器,然后在两者都连接的情况下执行某些操作。到目前为止,我已经:

if [ $(mount | grep -c /media/card) != 1 ]
 then
    echo "ERROR: SD card not mounted"
    sudo sh -c "echo timer > /sys/class/leds/led0/trigger"
    sudo sh -c "echo 2000 > /sys/class/leds/led0/delay_on"
else
    if [ $(mount | grep -c /media/backup) !=1 ]
    then
            echo "ERROR: Backup not mounted"
            sudo sh -c "echo timer > /sys/class/leds/led0/trigger"
            sudo sh -c "echo 2000 > /sys/class/leds/led0/delay_on"
    else
            echo "All Plugged in"
    fi
fi

Running返回错误:

./backup2.sh: line 12: [: 0: unary operator expected

不确定为什么第一个if语句有效,但第二个没有,因为它们基本相同。是否有更清洁的方法来检查两个已安装的设备?理想情况下输出一个错误,显示哪个(或多个)没有安装。

2 个答案:

答案 0 :(得分:2)

您需要在!=

之后添加一个空格
if [ $(mount | grep -c /media/backup) !=1 ]

像这样:

if [ $(mount | grep -c /media/backup) != 1 ]

顺便说一下,如果您有超过1个匹配/media/card/media/backup的已安装驱动器,会发生什么? 输出会产生误导, 说“X没有安装”。

因此,用!= 1替换== 0条件似乎更有意义。 但如果你决定这样做, 然后有一个更好的方式来写条件, 直接使用管道的退出代码。

if ! mount | grep /media/card >/dev/null
then
    echo "ERROR: SD card not mounted"
    sudo sh -c "echo timer > /sys/class/leds/led0/trigger"
    sudo sh -c "echo 2000 > /sys/class/leds/led0/delay_on"
elif ! mount | grep /media/backup >/dev/null
then
    echo "ERROR: Backup not mounted"
    sudo sh -c "echo timer > /sys/class/leds/led0/trigger"
    sudo sh -c "echo 2000 > /sys/class/leds/led0/delay_on"
else
    echo "All Plugged in"
fi

答案 1 :(得分:0)

这是一个更简洁的代码 - 删除了嵌套的if并使用了elif,并考虑了janos关于!=1所需空间的评论:

#!/bin/bash

if [ $(mount | grep -c /media/card) != 1 ]
then
    echo "ERROR: SD card not mounted"
    sudo sh -c "echo timer > /sys/class/leds/led0/trigger"
    sudo sh -c "echo 2000 > /sys/class/leds/led0/delay_on"
elif [ $(mount | grep -c /media/backup) != 1 ]
then
    echo "ERROR: Backup not mounted"
    sudo sh -c "echo timer > /sys/class/leds/led0/trigger"
    sudo sh -c "echo 2000 > /sys/class/leds/led0/delay_on"
else
    echo "All Plugged in"
fi

似乎在Red Hat 6.x下运作良好