hhyixiaolife 2021-05-06 19:17 采纳率: 0%
浏览 179

将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



  • 写回答

2条回答 默认 最新

  • CSDN专家-黄老师 2021-05-07 14:20
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 高价求中通快递查询接口
  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?