【发布时间】:2014-09-01 20:46:55
【问题描述】:
我正在尝试将 .bat 文件转换为 .sh 文件,这是我的代码行
#!/bin/sh
./setenv.sh
export _LIBJARS=for i in [$XYZ_HOME$/lib/*.jar];do source $XYZ_HOME$/bin/append.bat i
export CLASSPATH=$ANT_HOME$/lib/ant.jar;$_LIBJARS$$ANT_HOME$/bin/ant -buildfile $XYZ_HOME$/build.xml $1 $2 $3 $4
写完这行之后,我写了chmod 755 ./build.sh
然后我写了./build.sh test-deploy
我收到以下错误:
./build.sh: line 3: syntax error near unexpected token `do'
./build.sh: line 3: `export _LIBJARS=for i in [$XYZ_HOME$/lib/*.jar];do source $XYZ_HOME$/bin/append.bat i'
我的 .Bat 文件是这样的
call setenv.bat
set _LIBJARS=
for %%i in (%XYZ_HOME%\lib\*.jar) do call %XYZ_HOME%\bin\append.bat %%i
set CLASSPATH=%ANT_HOME%\lib\ant.jar;%_LIBJARS%
%ANT_HOME%\bin\ant -buildfile %XYZ_HOME%\build.xml %1 %2 %3 %4
或任何了解代码行或与shell和bash文件相关的教程请建议我。
【问题讨论】:
-
也许是
export _LIBJARS=$(for ....)。我不明白你想在第三行做什么......看来你想把那个 bat 文件的输出放在 _LIBJARS 里面。 -
@DavidWallace Sir,如果我省略分号,我会收到如下错误 ./build.sh: line 3: export:
[$/lib/*.jar]do': not a valid identifier ./build.sh: line 3: export:$/bin/append.bat': not a valid identifier -
1 Shell 变量最后没有写上
$。 2source [...].bat貌似是自找麻烦,3 @Hastur 应该是对的,另外加个done。 4 for 循环在很多方面都是错误的,也许你应该从 shell/Bash 教程开始。 -
你为什么需要
source你的bat文件?执行还不够?当您source时,某个脚本就好像您在获取它的脚本的位置编写它的代码一样。 @Biffen 在这一点上发现了麻烦。我们不知道 append.bat 的行为方式以及它是否需要在新的 shell 中启动。
标签: bash shell batch-file