gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 09:09:44 24 4
gpt4 key购买 nike

我的 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 服务器的脚本。我最终也会为所有其他服务器添加 if 条目。这是我不选择 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

注意:这些括号周围的空格很重要。条件测试周围的方括号实际上是 test 运算符的同义词。所以上面等同于:

if test "$server" = "Creative+Survival"
then
echo "true"
else
echo "false"
fi

但是每个人都使用括号;我很少看到使用 test 关键字的脚本。

在 bash shell 中也允许使用双括号(虽然这不是可移植的,因为它不是 POSIX 标准):

if [[ "$server" = "Creative+Survival" ]]
then

这是一个页面链接,它描述了 [[[test 之间的区别: http://mywiki.wooledge.org/BashFAQ/031


更新

问: 这似乎可行,但如果我选择除“Creative+Survival”以外的任何选项,它会吐出一个错误代码。这是应该发生的吗?

答: 根本不清楚哪个组件发出的错误代码。我希望您想检查每个可能的选择。您可以使用 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
echo "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 关心换行符,而不是前导空格。)

关于BASH 脚本期待,当我需要其他的时候,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14073294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com