用于检查两个已安装驱动器的BASH脚本';应为一元运算符';
尝试编写一个bash脚本来检查两个已安装的驱动器,然后在两个驱动器都已连接的情况下执行操作。到目前为止,我已经:用于检查两个已安装驱动器的BASH脚本';应为一元运算符';,bash,shell,raspberry-pi,raspbian,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/le
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
运行返回错误:
./backup2.sh: line 12: [: 0: unary operator expected
不确定为什么第一个
if
语句有效,但第二个语句无效,因为它们基本相同。是否有更干净的方法检查两个安装的设备?理想情况下,输出一个错误,显示哪些未装入。您需要在后面加一个空格=代码>:
像这样:
if [ $(mount | grep -c /media/backup) != 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
这是一个更干净的代码——删除了嵌套的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下似乎工作得很好对不起,亚诺斯——你刚刚在elif上击败了我…:-)谢谢,这很有效!它不太可能在同一个地方有多个,因为我正在使用它为我的相机SD卡创建一个便携式备份设备。PS:自动指出缺少的空间
#!/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