把 bat 转换为 sh

把 bat 转换为 sh

我对 Linux 中的脚本编写还很陌生...所以我想将一些简单的窗口 bat 文件移植到 ubuntu。

第一个文件很简单

  setenv.bat
    set ANT_HOME=c:\ant\apache-ant-1.7.1
    set JAVA_HOME=c:\java

在 Linux 中我这样做了,看起来不错

  setenv.sh
      #!/bin/bash
    JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.24/
    ANT_HOME=/usr/share/ant
    echo $JAVA_HOME
    echo $ANT_HOME

但现在我想移植这个 bat 文件:startserver.bat

call ../config/setenv

call %ANT_HOME%/bin/ant -f ../config/common.xml start_db
call %ANT_HOME%/bin/ant -f ../config/common.xml start_server


pause

但我不知道如何在 Linux 中调用 ../config/setenv 来做到这一点

谢谢您提供的任何帮助和指导。

答案1

这将是:

#!/bin/sh
source ../config/setenv.sh
${ANT_HOME}/bin/ant -f ../config/common.xml start_db
${ANT_HOME}/bin/ant -f ../config/common.xml start_server

source将使 setenv.sh 中设置的变量可用于您当前的脚本。
${ANT_HOME}/bin/ant将执行 ant 二进制文件。
它将pause只是等待,以便 cmd.exe 窗口不会关闭,我建议不要移植它。

无论如何,这些都是非常基础的东西,看看一些基本的 shell 脚本教程,例如:
https://supportweb.cs.bham.ac.uk/documentation/tutorials/docsystem/build/tutorials/unixscripting/unixscripting.html

答案2

 #!/bin/bash
 cd /path/to/working/directory
 source ../config/setenv
 $ANT_HOME/bin/ant -f ../config/common.xml start_db
 $ANT_HOME/bin/ant -f ../config/common.xml start_server
 sleep 10

进入脚本后,您可以直接调用脚本 - 但问题是所有调用都是相对的。如果您能确定这一点,那就没问题了 - 因此您可以添加一个命令来确保这一点 - cd /path/to/working/directory

答案3

如果你想引入这些环境变量,请使用关键字“source”(又名“。”),而不是调用

启动程序时不需要在前面加上“call”

另外,变量由 $variablename 而不是 %variablename% 引用

答案4

另一个例子:

#!/bin/bash

export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.24/
export ANT_HOME=/usr/share/ant

$ANT_HOME/bin/ant -f ../config/common.xml start_db
$ANT_HOME/bin/ant -f ../config/common.xml start_server

相关内容