将bat脚本转shell脚本

@echo off

rem 记录当前位置
set "CURRENT_DIR=%cd%"

rem jdk源码目录
cd ..
set "SOURCE_DIR=%cd%\src"
cd /d %CURRENT_DIR%

rem 编译rt_debug.jar存放的目录
set "RT_DEBUG_DIR=%CURRENT_DIR%\jdk_debug"

rem jdklib目录(编译代码要用的)
rem set "LIB_PATH=%JAVA_HOME%\jre\lib\rt.jar;%JAVA_HOME%\lib\tools.jar"
set "LIB_PATH=%JAVA_HOME%\jre\lib\rt.jar %JAVA_HOME%\lib\tools.jar"

rem rt_debug.jar需要存放的位置
set "RT_DEBUG_ENDORSED_DIR=%JAVA_HOME%\jre\lib\endorsed"

rem 显示JAVA_HOME变量
rem echo "%JAVA_HOME%"

rem 如果jdk_debug不存在,则进行创建
if not exist "%RT_DEBUG_DIR%" mkdir "%RT_DEBUG_DIR%"

rem 生成需要编译的文件列表
dir /B /S /X "%SOURCE_DIR%\*.java" > "%CURRENT_DIR%\filelist.txt"

rem 执行编译操作
rem javac可能不支持在指定cp的时候,写不同路径的jar包,这里简单起见,直接把rt.jar和tools.jar复制到当前目录下
rem javac -J-Xms16m -J-Xmx1024m -encoding UTF-8 -sourcepath %SOURCE_DIR% -cp %LIB_PATH% -d %RT_DEBUG_DIR% -g @filelist.txt >> log.txt 2>&1

rem 批量将jar包复制到当前目录下(如果不存在,则复制过去)
rem 临时存放路径的变量
set "my_path="
setlocal EnableDelayedExpansion
for %%i in (%LIB_PATH%) do (
rem setlocal
call:getFileName "%%i"
if not exist "!my_path!" copy /y "%%i" "%CURRENT_DIR%"
rem endlocal
)
setlocal DisableDelayedExpansion

javac -encoding UTF-8 -J-Xms16m -J-Xmx1024m -sourcepath %SOURCE_DIR% -cp rt.jar;tools.jar -d %RT_DEBUG_DIR% -g @filelist.txt >> log.txt 2>&1

rem 生成rt_debug.jar
cd /d "%RT_DEBUG_DIR%"&&jar cf0 rt_debug.jar *

rem 把新生成的jar包放到JDK_HOME\jre\lib\endorsed中(如果没有endorsed文件夹,则手动创建)
if not exist "%RT_DEBUG_ENDORSED_DIR%" mkdir "%RT_DEBUG_ENDORSED_DIR%"
copy /y "%RT_DEBUG_DIR%\rt_debug.jar" "%RT_DEBUG_ENDORSED_DIR%\rt_debug.jar"

rem pause&goto:eof
goto:eof&exit


rem 自定义函数:通过全路径获得文件名
:getFileName
rem for %%a in ("%~1") do (echo %%~nxa)
rem for %%a in ("%~1") do (echo %CURRENT_DIR%\%%~nxa)
for %%a in ("%~1") do (
set "my_path=%CURRENT_DIR%\%%~nxa"
)
goto:eof

转换成shell
#!/bin/bash

# 当前脚本的文件夹路径,compileSourceCode.sh位置
CURRENT_DIR=$(cd "$(dirname "$0")"; pwd)
echo 当前脚本的文件夹路径: $CURRENT_DIR

# jdk源码目录
CURRENT_DIR_PRE=$(cd ".."; pwd)
SOURCE_DIR=$CURRENT_DIR_PRE/src
echo jdk源码目录: $SOURCE_DIR

# 本地jdk安装目录, 此处未获取到 /etc/profile里面的变量值, 后续改进
MY_JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home

# 编译rt_debug.jar存放的临时目录
RT_DEBUG_DIR=$MY_JAVA_HOME/jdk_debug
echo 编译rt_debug.jar存放的目录: $RT_DEBUG_DIR

# jdklib目录, 编译代码要用的
LIB_PATH=$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/tools.jar
echo jdklib目录: $LIB_PATH

# rt_debug.jar需要存放的位置
RT_DEBUG_ENDORSED_DIR=$MY_JAVA_HOME/jre/lib/endorsed
echo rt_debug.jar需要存放的位置: $RT_DEBUG_ENDORSED_DIR

# 生成需要编译的文件列表
find $SOURCE_DIR -type f -name "*.java" > $CURRENT_DIR_PRE/files.txt



这个只能根据你脚本的功能去写shell脚本

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632