这是我的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语句差异,但没有找到错误解决方案。可能有人帮忙吗?
答案 0 :(得分:4)
删除第一个和第二个fi
。它应该看起来像
if ...
...
elif ...
...
elif ...
...
fi
有关详细信息,请参阅Bash - Conditional Constructs。
答案 1 :(得分: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
我还冒昧地引用了你所有的参数扩展,这就是你应该养成使用嵌入空格使你的脚本对参数/变量具有鲁棒性的习惯。
另外,我建议投资正确的错误处理。