0

这是我的 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'

我花了很长时间尝试各种 if-else 语句差异,但没有找到错误解决方案。有人可以帮忙吗?

4

2 回答 2

4

删除第一个和第二个fi. 它应该看起来像

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

有关更多详细信息,请参阅Bash - 条件构造

于 2013-01-05T22:35:07.437 回答
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

我还冒昧地引用了您所有的参数扩展,这是您应该养成的习惯,以使您的脚本对带有嵌入空格的参数/变量具有健壮性。

另外,我建议投资于适当的错误处理。

于 2013-01-05T23:56:33.487 回答