1
我需要在bash中重定向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 ...
導致錯誤這樣的:
[email protected]:/opt/SEOC2# seoc2 start Starting servis... /usr/local/bin/seoc2: line 31: ((/usr/bin/java: dir or file doesn't exist
試圖通過$(),``等,但來彌補這一命令完全沒有影響:(
任何建議或意見將非常感激,玩了幾個小時已經:/
感謝名單了很多 劉若英
能否請您發佈的內容,你輸入在bash提示符下到* *調用**失敗的腳本,並顯示你從哪裏調用它(即當您厭倦運行腳本時,當前目錄是什麼) – 2012-07-18 13:52:45
您是否需要在一個變量中使用整個管道?問題是引用的字符串會導致shell不將括號解釋爲shell語法,而是將其解釋爲字符串中的文字字符。最簡單的方法就是在第31行寫出命令。'eval $ cmd'可以工作,但*不推薦使用。 – chepner 2012-07-18 13:58:24
@JoshGreife不是你在我最初的帖子的最後一個灰色框中要求什麼?即 skript位於/ opt/SEOC2 但應該能夠從任何地方運行 $ err,$ log,$ combined是在本示例中的/ opt/SEOC2/log/ 的絕對路徑位置,我從/ opt/SEOC2 – user1062331 2012-07-18 14:14:09