【问题标题】:Create a shell script to run a Java program on Linux创建 shell 脚本以在 Linux 上运行 Java 程序
【发布时间】:2015-12-24 13:48:30
【问题描述】:

我创建了一个同步两个目录内容的 java 程序。该程序将两个目录的位置作为参数来同步它们,同步信息是它们存储在每个目录内的 JSON 格式文件中。 我有一个引用库json-simple-1.1.1.jar

我在 windows 上从 eclipse 运行它,一切正常。 我想创建一个 shell 脚本,以便我可以通过键入 sync dir1 dir2 在 Linux 终端上运行它,其中 sync 是我的 java 程序,dir1dir2 是要从当前目录同步的目录的路径.

我对 shell 脚本和 Linux 非常陌生,不确定这是否容易做到,或者我会花上一整天的时间。

【问题讨论】:

  • 你听说过rsync吗?

标签: java linux shell


【解决方案1】:

您可以创建一个名为“run.sh”的 shell(注意 .sh 扩展名表明它是一个 shell 脚本)并将其复制到 /usr/local/bin 目录中。

1.脚本(run.sh)

#!/bin/sh

arg1=$1
arg2=$2

##directory where jar file is located    
dir=/directory-path/to/jar-file/

##jar file name
jar_name=json-simple-1.1.1.jar

## Permform some validation on input arguments, one example below
if [ -z "$1" ] || [ -z "$2" ]; then
        echo "Missing arguments, exiting.."
        echo "Usage : $0 arg1 arg2"
        exit 1
fi

java -jar $dir/$jar_name arg1 arg2
  1. 将脚本复制到 /usr/local/bin

    cp run.sh /usr/local/bin

  2. 赋予脚本执行权限

    chmod u+x /usr/local/bin/test.sh

  3. 现在你可以在命令行输入 run 或 run.sh 了:shell 会自动补全脚本名称,也可以按回车键执行。

【讨论】:

    【解决方案2】:

    在 /usr/bin 中创建一个名为“sync”的文件,其中包含以下内容:

    java -jar {PATH TO JARFILE} $1 $2
    

    {PATH TO JARFILE}替换为jarfile的路径

    在 /usr/bin 中键入 chmod +x sync 使文件可执行

    【讨论】:

    • 假设这一切都是在 Linux 上完成的?对我缺乏知识表示歉意。
    • “同步”应该有什么文件扩展名?
    • 抱歉回复晚了,是的,这确实是在 Linux 上完成的。因为我自己已经很久没有这样做了,所以我不太记得它应该有什么文件扩展名。我认为这不是文件扩展名,只是简单的“同步”,如果这不起作用,您也可以尝试“sync.sh”。这是其中之一
    • 通常shell脚本以“.sh”扩展名命名:example script-name.sh
    猜你喜欢
    • 2014-10-06
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    相关资源
    最近更新 更多