Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 用于在正确路径中运行Java类的通用脚本_Linux_Macos_Shell_Unix - Fatal编程技术网

Linux 用于在正确路径中运行Java类的通用脚本

Linux 用于在正确路径中运行Java类的通用脚本,linux,macos,shell,unix,Linux,Macos,Shell,Unix,我有一个package/bin和package/lib的目录结构,其中package/lib包含jar文件,package/bin应该包含一些脚本 我对在package/bin中编写基本上从lib/运行java类的脚本感兴趣。这些脚本应该可以从任何目录运行,不一定是package/、package/bin/或package/lib 这意味着package/bin中的脚本(我们称之为“run.sh”)应该执行以下操作: 标识运行run.sh脚本的目录 去掉目录,这样我们就可以得到一个包了/ 添加b

我有一个package/bin和package/lib的目录结构,其中package/lib包含jar文件,package/bin应该包含一些脚本

我对在package/bin中编写基本上从lib/运行java类的脚本感兴趣。这些脚本应该可以从任何目录运行,不一定是package/、package/bin/或package/lib

这意味着package/bin中的脚本(我们称之为“run.sh”)应该执行以下操作:

  • 标识运行run.sh脚本的目录
  • 去掉目录,这样我们就可以得到一个包了/
  • 添加bin/到它
  • 使用该目录运行必要的java类
  • 遵循步骤1-3的最佳方式是什么?我希望它几乎与平台无关,这样至少它可以在所有Unix系统和OSX上工作。我希望避免使用perl(我可以很容易地用perl编写),而是选择shell脚本


    谢谢。

    沿着BASH的路线

    my_package_path=$(dirname `dirname $0` )
    
    $0提供您正在运行的脚本的路径
    dirname$0
    为您提供脚本所在文件夹的路径

    请参阅,以通过步骤1和2-如果您使用的是Gnu Bash系统,至少是这样。(Put#!/bin/bash)-虽然不能移植到其他POSIX Bourne shell,但可能会限制您使用OSX和Linux,但不一定是所有Unix(POSIX)系统。