мне нужно перенаправить stout и stderr в bash каждый в отдельный файл. хорошо, я выполнил эту команду:
((/usr/bin/java -jar /opt/SEOC2/seoc2.jar 2>&1 1>&3 | tee --append /opt/SEOC2/log/err.log) 3>&1 1>&2 | tee --append /opt/SEOC2/log/app.log) >> /opt/SEOC2/log/combined.log 2>&1 &
который отлично работает из командной строки.
попытка поместить ту же самую команду в скрипт bash
... 12 cmd="(($run -jar $cmd 2>&1 1>&3 | tee --append $err) 3>&1 1>&2 | tee --append $log) >> $combined 2>&1" ... 30 echo -e "Starting servis..." 31 $cmd & 32 pid=`ps -eo pid,args | grep seoc2.jar | grep -v grep | cut -c1-6` 33 if [ ! -z $pid ]; then ...
приводит к такой ошибке:
root@operator:/opt/SEOC2# seoc2 start Starting servis... /usr/local/bin/seoc2: line 31: ((/usr/bin/java: dir or file doesn't exist
пытался скрыть эту команду $(), ` ` и т. д., но безрезультатно :(
любые предложения или советы будут очень признательны, играя уже несколько часов: /
большое спасибо Рене
eval $cmd
подойдет, но не рекомендуется. - person chepner   schedule 18.07.2012