2016-09-28 3 views
0

У меня есть этот код, который принимает файл Bash и запустить его, то он печатает proccess с Bash в консоли:Сценарий и Java: как я могу сказать Java, чтобы он помещал выходной файл в новую папку?

package main.java.com.reachforce.java; 

import java.io.IOException; 
import java.io.InputStream; 

public class RunScript { 

    public static void main(String[] args) throws InterruptedException { 
     try { 
      // Run the process 

      Runtime run = Runtime.getRuntime(); 
      Process p = run.exec("C:/cygwin64/bin/bash -c \\'/bin/tests/SatoriTest1.sh 04.10 C:\\cygwin64\\bin\\tests"); 
      p.waitFor(); 

      // Get the input stream 
      InputStream is = p.getInputStream(); 

      // Read script execution results 
      int i = 0; 
      StringBuffer sb = new StringBuffer(); 
      while ((i = is.read()) != -1) 
       sb.append((char)i); 

      System.out.println(sb.toString()); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 
} 

и консоль после запуска он показывает мне:

Test SatoriTest1 писать вывод в/SatoriTest1-вывода

Теперь форматирование файла Imput/входной_файл

Исполнительной локон -k -v -i -X ​​POST -d --output/SatoriTest1-выход --header "Content-Type: применение/JSon" -H "Accept: приложения/JSON"/Сатори-сервис/проверки

Конец SatoriTest1.sh

Я пытался выяснить, где это «SatoriTest1-output» создан, но ... я не могу его найти.

Это .sh файл:

#!/bin/bash 
# 

# First need to compute directory for sourcing additonal files 
DIR="$(dirname "${BASH_SOURCE}")/.." 
CURLDIR=`dirname "$(readlink -f "$BASH_SOURCE")"` 
SCRIPTNAME="SatoriTest1" 

# This script relies on the getconfig settings so calling now . 
"${CURLDIR}/getmicroserviceconfig.sh" 

# Calling the getmicroserviceconfig.sh function to get the configuration 
getmicroserviceconfig 

# Also the formatSatori.sh FORMATFILE="${OUTPATH}/formatSatori.sh" 
if [ -f "${FORMATFILE}" ] then 
     . "${FORMATFILE}" 
fi 

# 
# Usage ./SatoriTest1.sh 
# 
# Testing /satori-service: POSTs a new address for validation 
# 
# Note: using -k to avoid certificate foof 
# 
# Depends on: 001-login test (to get a successful login w/security token) 

# SatoriTest1: /satori-service/validate: Satori address validation test 
#Expect this to submit an address to Satori address validation service 
# 

THISTEST="SatoriTest1.sh" 

APIPATH="satori-service/validate" FULLURL="${WEBSERVICEURL}/${APIPATH}" OUTPUTFILENAME="${OUTPATH}/SatoriTest1-output" 

echo "Test $SCRIPTNAME writing output to ${OUTPUTFILENAME}" 

NEWSATORIFILE="${OUTPATH}/inputfile" 

echo "Now formatting imput file ${NEWSATORIFILE}" 

formatSatori "${NEWSATORIFILE}" 

NEWSATORIREQ=$newsatorireq 

echo ${NEWSATORIREQ} > "${OUTPATH}/${OUTPUTFILENAME}.json" 

# 
# Now make the API calls using curl 
# 


# Calling POST with inputfile 
echo "Executing curl -k -v -i -X POST -d ${NEWSATORIREQ} --output ${OUTPUTFILENAME} --header \"Content-Type: application/json\" -H \"Accept:application/json\" ${FULLURL}" curl -k 
-v -i -X POST -d "${NEWSATORIREQ}" --output "${OUTPUTFILENAME}" --header "Content-Type: application/json" -H "Accept:application/json" "${FULLURL}" 

echo "End ${THISTEST}" 

Любая помощь?

ответ

1

Путь к вашему входному и выходному файлам построен из OUTPATH, который не определен в скрипте. Следовательно, OUTPUTFILENAME = "$ {OUTPATH}/SatoriTest1-output" стал "/ SatoriTest1-output".

Проверьте выходной файл в корневой директории i.e,/или инициализируйте OUTPATH ​​и попробуйте.

 Смежные вопросы

  • Нет связанных вопросов^_^