2013-06-12 2 views
3

Я создал сценарий для автоматического подключения устройства usb и cdrom при его подключении. Я пытался заставить это работать с autofs (см. https://superuser.com/questions/605896/automount-usb-pen-drive-and-cdrom-drive-on-plugin), но теперь пытается работать с скрипт работает при загрузке.Ошибка Bash отсутствует Ошибка ']'

Я думаю, что логика звук, но я получаю line 13: [: missing ']'

Сценарий:

#!/bin/bash 
while true 
do 
    if [ -b /dev/sda1 ] 
     then 
     mkdir /media/usb 
     mount /dev/sda1 /media/usb 
     while [ -b /dev/sda1]; do 
     sleep 2 
     done 
     umount /media/usb 
     rmdir /media/usb 
    fi 
    if [ -b /dev/cdrom ] 
     then 
     mkdir /media/cdrom 
     mount /dev/sda1 /media/cdrom 
     while [ -b /dev/cdrom]; do 
     sleep 2 
     done 
     umount /media/cdrom 
     rmdir /media/cdrom 
    fi 

    sleep 5 
done 

И тогда скрипт запускается из rc.local, используя ./path/to/script&

+0

'в то время как [-b/DEV/sda1] => в то время как [-b/DEV/sda1]' –

+0

тот же вопрос 10 строк позже в 'в то время как [ -b/dev/cdrom]; do' – twalberg

ответ

8

Вам нужно пространство здесь:

while [ -b /dev/cdrom]; do 
        ^
_____________________| 
+0

хорошо, что было одним большим моментом «до»:/спасибо (отметит ответ после 5 минут) –

+0

@ZacPowell Случается лучшим из нас. :) –

+0

'[' на самом деле (возможно, встроенная) команда, а не часть основного синтаксиса оболочки. Последний аргумент команды '[' должен быть ']'. '/ dev/cdrom]' анализируется как один токен. Вот почему пространство требуется. –

1

Есть только пробелы отсутствует, вместо

while [ -b /dev/sda1]; do 

попробовать

while [ -b /dev/sda1 ]; do 
Смежные вопросы