我有一個腳本「postprocessing.sh」。該腳本用於後期處理熱力學仿真程序包的數據輸出,由父程序「npo」調用。Bash腳本從命令行成功運行,但不能在程序調用時運行
下面的代碼用於查找數據文件「MELC.PTF」中的數據向量「CFVALU_10000202」,將數據向量寫入文件「DATA1」,執行一些簡單的後處理,最後寫入結果爲「ext.goal1」。
爲此,許多使用的函數(MREAD,寫入g0.s0,基本上寫入aptplot1.gr的所有內容)都是安裝在文件樹不同部分中的繪圖工具的一部分。調用aptbatch.sh作爲輸入參數時,我們調用這個繪圖工具。 aptbatch.sh的路徑保存在「.bashrc」文件的路徑變量中。
通過鍵入「./postprocessing.sh」或「bash後處理」從bash執行下面的腳本時,它按照預期的方式執行,正好爲。文件DATA1,aptplot1.gr和ext.goal1在當前工作目錄中生成,並具有正確的內容。
當運行「npo」程序時,它調用「postprocessing.sh」,aptplot1.gr被寫入文件,但不會產生「DATA1」和「ext.goal1」。當試圖調用「aptbatch.sh」時程序停止。嘗試通過實驗在不使用「aptbatch.sh」的情況下運行「postprocessing.sh」,只需將一組隨機變量寫入文件即可正常工作,所以問題不在於調用後處理腳本。
根據npo的作者,程序應該發出一個帶有腳本名稱的系統命令,調用命令shell。
我試圖尋找涉及可執行文件的權限,並將chmod + x應用於任何事物,但沒有任何骰子。任何人都可以想到可能導致此問題的系統變量或權限?
#! /bin/sh
cd ~/Melcor/NordicBWR/MinGoalFct/NordicBWR_05_08
# clean up
rm -f aptplot1* ext.goal1 DATA1*
# write read out commands for data vector to file
echo " MELCOR 0 PTF \"MELC.PTF\"" > aptplot1.gr
echo " MREAD 0 \"CFVALU_10000202\" DONE" >> aptplot1.gr
echo " write g0.s0 FILE \"./DATA1\"" >> aptplot1.gr
# execute file
aptbatch.sh -batch aptplot1.gr -nosafe -hardcopy
# postprocessing of max. data value
awk 'BEGIN {max = 0} {if ($2>max) max=$2} {GF = max-10000} {if (GF<0) GF=10000-max} END {printf("%6.5f\n", GF) } ' DATA1 > "ext.goal1"
摘要:
腳本運行命令行罰款,腳本在aptbatch.sh當程序調用(但即使在這種情況下工作正常,沒有aptbatch.sh調用)檔。 aptbatch.sh的路徑位於.bashrc中,使用運行失敗期間生成的aptplot1.gr運行「aptbatch.sh -batch aptplot1.gr -nosafe -hardcopy」時,它工作正常。
想法?
它是在同一目錄下運行?(可能是一個非問題退避三舍,第一行是一個CD)。PATH會事宜因爲它必須在某個地方找到aptbatch.sh – John3136