需要帮助将批量转换为bash

时间:2012-07-24 03:46:46

标签: bash batch-file

所以我一直在尝试将我的批处理文件转换为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抱怨语法

3 个答案:

答案 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

(虽然我对类搜索路径末尾的空白目录感到惊讶......)