我对 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