Я работаю над проектом обработки файлов и пытаюсь запустить сценарий оболочки с именем runProcessing.sh в PuTTY. Сервер использует ksh. Мой руководитель сказал мне использовать ./ runProcessing.sh <param1> <param2>
при выполнении сценария, но всякий раз, когда я использую ./, он говорит либо cannot execute
, либо file not found
. Всякий раз, когда я вставляю только runProcessing.sh
, он возвращает исключения с нулевым указателем, над которыми я сейчас работаю, чтобы продолжить свою задачу.
Я понимаю, что делает ./ при запуске скриптов, но я не уверен, почему он не работает, когда я пытаюсь запустить с ним свой скрипт. Любые советы или советы? Я новичок в Linux/UNIX.
Вот мой сценарий:
#!/bin/ksh
#
# Script to download processing files from the appropriate target
#
# $Id: runProcessing.sh 604 2013-01-14 21:56:35Z alex_rempel $
#
DIR=`dirname $0`
. $DIR/setEnvironment.sh
java $LDAPRUNMODE $JAVAOPT com.webproject.db.processing.FPJob --logdir $CISLOGDIR --file [2] $*
RET=$?
if [ $RET -gt 0 ]
then
echo
echo
echo "------ runProcessing.sh Failed ------"
echo
echo
exit $RET
./something
(указание текущего каталога как места для поиска чего-либо) и. something
(запуск чего-либо в текущей оболочке, а не в качестве подпроцесса) имеют смысл../ something
недопустимое использование. - person Charles Duffy   schedule 02.07.2013if
безfi
. Вы также должны заключать свои расширения в кавычки и не должны использовать$?
— здесь нет смысла.if ! java ...; then ...; fi
достаточно, нет причин хранить$RET
. Кроме того, использование заглавных букв для чего-либо, кроме переменных среды и встроенных функций, является плохим тоном. (Рассчитывать на разбиение строк, чтобы позволить людям передавать списки аргументов, особенно дурной тон, но это почти повсеместно встречается среди скриптов, запускающих Java-приложения... почти все они написаны людьми, которые не малейший намек на оболочку). - person Charles Duffy   schedule 02.07.2013