【问题标题】:Running a command in shell script在 shell 脚本中运行命令
【发布时间】:2009-10-20 01:28:15
【问题描述】:

我有一个包含以下内容的 shell 脚本文件 (run.sh):

#!/bin/bash
%JAVA_HOME%/bin/java -jar umar.jar

当我尝试运行它 (./run.sh) 时,它给了我以下信息: umar/bin/run.sh:第 1 行:fg:无作业控制

但是,如果我直接在 shell 上运行相同的命令,它会完美运行。

脚本文件有什么问题?

谢谢

【问题讨论】:

  • 你把#!/bin/bash 作为脚本的第一行了吗?

标签: linux shell command-line


【解决方案1】:

%foo% 不是在 bourne/BASH shell 脚本中进行命令替换的方式。我假设您是从 Windows 命令行运行它,这就是直接运行它的原因。尝试使用正确的 bourne 语法:

${JAVA_HOME}/bin/java -jar umar.jar

【讨论】:

  • 不要忘记保护变量免受空格:"$JAVA_HOME"/bin/java.
  • 谢谢保罗。我按照您的建议进行了更改。至少现在我没有收到“fg:没有工作控制”的消息。但现在它给了我这个错误:“无法访问 jarfile umar.jar”,即使我已将所有权限设置为 true:“chmod 777 umar.jar”。奇怪的事实是,如果我直接从 shell 运行 jar,它就可以完美运行。
  • umar.jar在当前目录吗?
  • 是的,它在当前目录中......这个问题也可以通过给出 jar 文件的完整路径来解决......现在奇怪的是我得到了第三种类型的错误:“线程中的异常”主“ java.lang.UnsupportedClassVersionError: Bad version number in .class file" 我想我应该为此启动一个新线程。
  • Umar,该消息通常是因为它是使用比您的 JRE 更高版本的 JDK 编译的。
【解决方案2】:

尝试开启监听模式

set -m

【讨论】:

    【解决方案3】:

    %JAVA_HOME% 将替换 Windows 环境变量,适用于 .bat 文件。

    试试下面的 shell 脚本,它应该可以在大多数类似 UNIX 的系统上运行。

    #!/bin/bash
    $JAVA_HOME/bin/java -jar umar.jar
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-09
      • 1970-01-01
      • 2019-09-02
      • 1970-01-01
      • 1970-01-01
      • 2013-08-21
      相关资源
      最近更新 更多