2013-06-12 141 views
3

我已經創建了一個腳本來掛載一個USB設備和光驅自動插入時。我一直試圖讓這與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];做' – twalberg

回答

8

這裏您需要的空間展開:

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

那麼這是一個大''時刻':/謝謝(5分鐘後應標記回答) –

+0

@ ZacPowell發生在我們身上。 :) –

+0

'['實際上是一個(可能內置的)命令,而不是shell的基本語法的一部分。 '['命令的最後一個參數應該是']'。 '/ dev/cdrom]'被解析爲單個標記。這就是爲什麼這個空間是必需的。 –

1

只有一個空格缺失,取代

while [ -b /dev/sda1]; do 

嘗試

while [ -b /dev/sda1 ]; do