尝试从Java运行脚本sh时出现问题。我已经尝试用 解决方案similar problems at stack overflow。从Java运行shell脚本
问题不是脚本本身的电话,但该命令pg_dump的:
=>如果我运行从控制台下面的脚本./my_script.sh
一切正常的话:
NOW="$(date +%Y%m%d_%H%M%S)"
BACKUP_FILE="backup_${NOW}.sql"
FOLDER="./backups"
if [ ! -d "$FOLDER" ]; then
mkdir $FOLDER
fi
OUTPUT=${FOLDER}/${BACKUP_FILE}
HOST="my.host.dir"
PORT="8080"
DB_NAME="dbName"
USER="user"
PASS="pass"
OPT="-h ${HOST} -p ${PORT} -U ${USER} -f ${OUTPUT} -c -C -i -b -v ${DB_NAME}"
EXPORT="export PGPASSWORD=${PASS}"
RUN="pg_dump ${OPT}"
echo ${EXPORT}
echo ${RUN}
$EXPORT
$RUN
=>但是如果我想从Java代码调用它,则echo
命令成功(所以脚本已被调用),但不是pg_dump
命令:
int exitValue = 0;
try {
ProcessBuilder pb = new ProcessBuilder(scriptPath);
Process p = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
LOG.log(Level.FINE, line);
}
exitValue = p.waitFor();
LOG.log(Level.FINE, "Process exitValue: " + exitValue);
} catch (IOException | InterruptedException e) {
LOG.log(Level.SEVERE, "Executing " + scriptPath, e);
return false;
}
return exitValue == 0;
我的问题是为什么相同的脚本从控制台成功,但没有从Java调用它?
尝试将#!/ bin/bash作为脚本的第一行。 – Don 2015-03-13 08:45:05