当我需要其他时,BASH脚本期待
我的bash脚本需要一些帮助:
#!/bin/bash zenity --list --title="Select Server" --text="Select the server to start" --radiolist --column= --column=Server --column=Port FALSE "Creative+Survival" 25565 FALSE "Tekkit Cheat Survival" 25566 FALSE "Flat Tekkit" 25567 FALSE "SunnyDale City" 25568 FALSE "Doom Dungeon" 25569 FALSE "Survival Tekkit" 25570 | cat > ~/temp server=$(cat ~/temp) if $server="Creative+Survival" then gnome-terminal -x sh "/home/kulboy121/Servers/Creative and Survival/launch.sh" end else echo wrong answer... end rm ~/temp 这是一个脚本,用于启动我拥有的一些Minecraft服务器.我最终会添加所有其他服务器的条目. Server Startup - INCOMPLETE.sh: 20: Server Startup - INCOMPLETE.sh: Syntax error: "else" unexpected (expecting "then") 当我选择Creative Survival时,同样的事情发生了.很抱歉,如果这是一个愚蠢的问题,这是我的第一个bash脚本之一. 谢谢! 解决方法
支架[(测试)操作符丢失.它应该是这样的:
if [ "$server" = "Creative+Survival" ] then echo "true" else echo "false" fi 注意:这些括号周围的空格很重要. if test "$server" = "Creative+Survival" then echo "true" else echo "false" fi 但每个人都使用括号;我很少看到使用test关键字的脚本. 在bash shell中也允许(虽然这不是便携式的,因为它不是POSIX标准)是使用双括号: if [[ "$server" = "Creative+Survival" ]] then 这是一个描述[,[[,和测试: 更新 问:这似乎有效,但如果我选择“创意生存”以外的任何其他内容,它会吐出错误代码.这应该发生吗? 答:根本不清楚什么错误代码是由什么组件吐出来的.我希望你能检查每个可能的选择.你可以用elif或case来做到这一点. if [ "$server" = "Creative+Survival" ] then echo "Creative and Survival" elif [ "$server" = "Tekkit Cheat Survival" ] then echo "Tekkit Cheat Survival" elif [ "$server" = "Flat Tekkit" ] then echo "Flat Tekkit" else ehco "no action for specified server" fi case "$server" in 'Creative+Survival') echo "Creative and Survival" ;; 'Tekkit Cheat Survival') echo "Tekkit Cheat Survival" ;; *) echo "no action found for server $server" ;; esac (注意:缩进仅用于提高可读性; bash关心换行符,而不是前导空格.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |