Т这是我写过的第一个脚本,我正在寻求帮助。我找不到像我正在尝试编写的那样的脚本,并且它变得很麻烦,因为我希望在这样的 bash 结构上创建更多/扩展。
如果有人有时间,他们可能会为我证明这一点。有人可以告诉我我做错了什么,为什么?
#! /bin/bash
# script to turn the screen blue
echo -e '\033[1;32m'
echo "Minecraft Server LTG Bukkit 1.4.7"
echo "Minecraft Server LTG Bukkit 1.4.7"
echo -e '\033[31m' "[Start ] \033[1;32m LTG MineCraft Server"
echo -e '\033[31m' "[Stop ] \033[1;32m LTG MineCraft Server"
echo -e '\033[31m' "[Restart] \033[1;32m LTG MineCraft Server"
echo -e '\033[0m'
cho -e "Hello, \033[47m \033[30m"$USER" \033[0m Enter Command:"
echo "Command:"
read $COM1 start stop restart
if ["$COM1" = "start"]: then
echo "ran minecraft serv"
if [ "$(pgrep -g java -Xmx256M -Xms256M -jar /minecraft/minecraft_server.jar)" ] ; then
echo MineCraft Server Bukkit 1.4.7 L.T.G : Running
else
echo -e "\033[1;32m MineCraft Server Bukkit 1.4.7 L.T.G : \033[31m FAILED \033[0m"
fi
if ["$COM1" "stop"]: then
echo -e "\033[1;32m MineCraft Server Bukkit 1.4.7 L.T.G : Shutting Down \033[0m"
killall java
if (( "$(pgrep -g java -Xmx256M -Xms256M -jar /minecraft/minecraft_server.jar)" )) ; then
killall java
echo -e "\033[1;32m MineCraft Server Bukkit 1.4.7 L.T.G: is SHUTDOWN \033[0m"
fi
if [ "$COM1" "Restart" ] ; then
echo MineCraft Server Bukkit 1.4.7 L.T.G : Rebooting
exit 1
fi
fi
exit 0
最佳答案
让我们走两条线......那里足以让我们忙碌。
read $COM1 start stop restart
if ["$COM1" = "start"]: then
第一行读入一个变量,其名称存储在
$COM1
中。 (这是未初始化的,所以实际上是空的,所以它毕竟没有做任何事情),加上三个变量start
, stop
, 和 restart
.您要么需要:read COM1 start stop restart
或者你需要初始化
COM1
在你使用它之前。第二行设法遇到了数量惊人的问题。
test
命令,又名 [
, 是命令名称,而不是符号。因此,它需要与其论点分开。注意通常有一个命令/bin/[
或 /usr/bin/[
,虽然它也是这些天内置的外壳。 $COM1
是未定的和空的,它已经被分开了,但更多的是偶然而不是设计。 [
命令使用 3 个参数执行:=
, ]:
和 then
.这不是对 [
的有效调用.最后一个参数应该是 ]
在其自己的。 ]
来自 then
. 总的来说,你应该写:
if [ "$COM1" = "start" ]
then
或者您可以添加一个分号(不必与
]
用空格分隔),然后是 then
:if [ "$COM1" = "start" ]; then
从风格上讲,你有字符串 '
Minecraft Server LTG Bukkit 1.4.7
' 到处重复;不!使用变量来保存它。担心您的嵌入式光标控制序列;不同的终端有不同的序列,因此您仅限于单一终端类型。修复更难;调查
tput
命令。
关于Bash 脚本 - 有人可以校对并解释为什么它是错误的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14453113/