加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

当我需要其他时,BASH脚本期待

发布时间:2020-12-15 22:00:59 所属栏目:安全 来源:网络整理
导读:我的bash脚本需要一些帮助: #!/bin/bashzenity --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 FAL
我的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服务器.我最终会添加所有其他服务器的条目.
这是我没有选择Creative Survival时的输出:

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

这是一个描述[,[[,和测试:
http://mywiki.wooledge.org/BashFAQ/031

更新

问:这似乎有效,但如果我选择“创意生存”以外的任何其他内容,它会吐出错误代码.这应该发生吗?

答:根本不清楚什么错误代码是由什么组件吐出来的.我希望你能检查每个可能的选择.你可以用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关心换行符,而不是前导空格.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读