2013-01-05 56 views
0

這裏是我的shell腳本並運行它時,我得到的錯誤:的if-else在shell腳本錯誤

#!/bin/bash 

path=$1 
execute=$2 
a=$3 
operation=$4 
name=$5 

if [ "$operation" == "run" ]; then 
    cd $path 
    ./$execute $a 
fi 
elif [ "$operation" == "copy" ]; then 
    mkdir -p $path 
    cp $execute $path/$name 
fi 
elif [ "$operation" == "delete" ]; then 
    rm $path 
    cd copy 
    rm $name 
    cd .. 
    rmdir copy 
fi 
./commandsScript.sh: line 14: syntax error near unexpected token `elif' 
./commandsScript.sh: line 14: `elif [ "$operation" == "copy" ]; then' 

我花了很長時間試圖所有種類如 - else語句的差異,但還沒有找到錯誤解決方案。有人可以幫忙嗎?

回答

4

考慮使用case表達,而不是一組鏈接if陳述的:

case "$operation" in 
run) 
    cd "$path" 
    ./"$execute" "$a" 
    ;; 
copy) 
    mkdir -p "$path" 
    cp "$execute" "$path/$name" 
    ;; 
delete) 
    rm "$path" 
    cd copy 
    rm "$name" 
    cd .. 
    rmdir copy 
    ;; 
esac 

我也冒昧引用您的所有參數擴展,這是你應該進入的習慣什麼的這樣做可以使您的腳本對內嵌空白的參數/變量有效。

此外,我會建議投資於適當的錯誤處理。

4

刪除第一個和第二個fi。它應該看起來像

if ... 
... 
elif ... 
... 
elif ... 
... 
fi 

有關更多詳細信息,請參閱Bash - Conditional Constructs