簡體   English   中英

無法從Java命令行運行Shell腳本

[英]Cannot run shell script from java Command Line

我正在嘗試從Java運行此腳本外殼,但無法正常工作。

我收到此錯誤消息:

Process exited with an error: 1 (Exit value: 1)

有人可以幫忙嗎?

String pwd = "blabla";

String s_key = "0000";

String path = "C:/Files/scripts"; 

CommandLine commandLine = CommandLine.parse("C:\\Program Files (x86)\\Git\\bin\\git.exe");

commandLine.addArgument("fileName.sh");

commandLine.addArgument(password);

commandLine.addArgument(s_key);

DefaultExecutor defaultExecutor = new DefaultExecutor();

ByteArrayOutputStream sdtout = new ByteArrayOutputStream();

ByteArrayOutputStream sdterr = new ByteArrayOutputStream();

PumpStreamHandler streamHandler = new PumpStreamHandler(sdtout, sdterr);

defaultExecutor.setStreamHandler(streamHandler);

defaultExecutor.execute(commandLine);

這是腳本

#!/bin/sh

pwd=$1
s_key=$2
....
echo $pwd

它與git bash一起很好地工作

  $ ./fileName.sh blabla 0000
  nkfjWmiG7dDnYUmjr6VD0A==

有一些要注意的地方。

  1. 如果要運行git bash命令,則需要執行git-bash.exe,在cmd控制台上,您需要執行以下命令:
 %windir%\\system32\\cmd.exe /c ""C:\\Program Files\\Git\\git-bash.exe" --login -i -- D:\\temp\\test.sh param1" 
  1. 如果要從Java應用程序執行,則相同,您需要執行的命令是git-bash.exe而不是git.exe。 這是從Java運行命令的示例。 我不是在使用您正在使用的對象,而是在使用簡單的Java對象。 但是,您可以使其適應您的代碼。
  public static void main(String[] args) throws IOException { String[] command = {"C:\\\\\\\\Program Files\\\\\\\\Git\\\\\\\\git-bash.exe", "D:\\\\temp\\\\test.sh", "param1"}; ProcessBuilder processBuilder = new ProcessBuilder(command); processBuilder.redirectErrorStream(true); processBuilder.start(); } 

您的代碼有幾個問題:

  • 您似乎並沒有在檢查程序的stderr / stdout,也沒有在檢查拋出的異常。
  • Git.exe不會將shell腳本作為第一個參數。 正如@reos所說,您可能需要調用git-bash.exe而不是git.exe

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM