所以我一直在尝试将我的批处理文件转换为bash。我正在运行一个linux(ubuntu)服务器,我想在那里运行我的游戏服务器,而不是我的工作/游戏机。这是bash
@echo off
title BSH 525
cd ../build
"C:\Program Files\Java\jdk1.7.0_03\bin\java.exe" -Xmx700m -server -cp .;../deps/*; net/com/codeusa/Server 43595
pause
这是我对bash的尝试
!/bin/bash
cd ../build
java -server -cp .;../deps/*; ../net/com/codeusa/Server 43595
我一直收到错误,例如找不到文件,或者java抱怨语法
答案 0 :(得分:1)
一些事情:
第一行应为:
#!/bin/bash
有一个前导#
。这是一种特殊语法,它告诉内核应该使用哪个shell来运行脚本。
在Unix中,路径在Java类路径中用:
分隔,而不是;
。所以试试:
java -server -cp .:../deps/* ../net/com/codeusa/Server 43595
;
实际上是一个命令分隔符,因此shell将您的单行视为三个不同的命令。
答案 1 :(得分:0)
在Linux中,目录分隔符为:
而不是;
java -server -cp .:../deps/*: ../net/com/codeusa/Server 43595
答案 2 :(得分:0)
你遇到了一些问题:
!/bin/bash
cd ../build
java -server -cp .;../deps/*; ../net/com/codeusa/Server 43595
hashbang行不正确;它应该是:
#!/bin/bash
你有一个cd ../build
- 但在执行此脚本之前,当前的工作目录是什么?您必须正确 - 或者使用绝对目录,例如:
cd ~/gameserver/build
而且,类Unix系统上目录列表的路径分隔符是:
而不是;
。因此,您的Java命令应该如下所示:
java -server -cp .:../deps/*: ../net/com/codeusa/Server 43595
(虽然我对类搜索路径末尾的空白目录感到惊讶......)