linux怎么用两个进程传值,关于linux:将变量脚本参数传递给另一个脚本,然后将qsub传递给程序...
在閱讀了大量的bash腳本線程和幫助站點之后,我找不到一個有效的解決方案。
我想把一個變量參數'i'從一個腳本傳遞到另一個腳本$i,然后qsub它到一個程序"$1"。在程序中,我從參數向量(**argv)中讀取變量,然后使用該變量將輸出文件的名稱修改為*0、*1、*2、…、*N。
這樣我就可以為程序的每個實例都有一個唯一的輸出文件。這個程序是并行的,但是由于計算資源的限制,我需要提交最多四個計算節點的一個作業,否則它將永遠不會通過Que。所以,我想剝離64個4節點的工作。
到目前為止,我已經閱讀了以下主題:
"-c選項"通過bash腳本向/bin/bash傳遞參數
"傳遞參數"http://linux.about.com/od/bash_腳本編寫解決方案/a/how-to-pass-arguments-to-a-bash-script.htm
"從參數$0或1開始"在Linux中,如何使用終端命令將文件參數傳遞給bash腳本?
"傳遞參數"http://how-to.wiki a.com/wiki/how_to_read_command_line_arguments_a_bash_腳本
我問的問題完全相同,但我的情況下,使用bash腳本中的循環變量來傳遞不同的命令行參數,答案并不適用。
在閱讀了這些之后,我對這個概念感到滿意,但仍然令人困惑的是-c和-s命令究竟是如何使用的,或者它們是否被使用;大多數例子都不包括這些。
這是我的前腳本
#
#$ -cwd
#$ -S /bin/bash
#$ -pe fah 1
for((i=0; i < 2; i++)); do qsub test_S17_script.sh $i; done
旁白:什么是qsub
這是我的劇本
#
#$ -M duser@acme_u.edu
#$ -m bae
#$ -cwd
#$ -S /bin/bash
#$ -pe fah 1
./daedalus_linux_1.3_64 1"$1"
因此,剝離工作正常,并生成文件。而且,腳本可以很好地傳遞常量./daedalus_linux_1.3_64 1 1,但是傳遞變量不起作用。我不知道處方是否正確地將變量i傳遞給腳本。我不知道如何從腳本中寫入錯誤文件,甚至不知道這是否是檢查變量是否被傳遞的方法。計算沒有用戶界面,所以一旦它在隊列中,我就必須依賴錯誤文件輸出。
提前感謝您的幫助。
什么是qsub?有一件事可能有助于診斷這一點,那就是使用set -x并捕獲標準錯誤輸出。
你也可以嘗試用echo $@來確認這些爭論是否通過。
@如果沒有接口——腳本被提交到一個批處理隊列中,所以沒有任何接口,那么Samveen會使用echo $@嗎?
考慮使用PBS作業數組。一個PBS腳本將提交多個作業,并且每個作業將具有不同的環境變量$PBS_array_index值。
如果您希望將標準輸出從處方傳遞到腳本,你可以這樣做:
./daedalus_linux_1.3_64 1 `[cc]`
如果處方在單獨的行上打印for循環(i=0,i=1)每次迭代的輸出,則可能會將處方生成的輸出通過管道傳輸到xargs命令。
在處方中,您可以更改輸出格式,以在一行上顯示每個qsub迭代生成的所有輸出,如下所示:
for((i=0; i < 2; i++)); do qsub test_S17_script.sh $i; done | xargs
或者您可以使用如下的xargs:
./daedalus_linux_1.3_64 1 `[cc] | xargs`
希望有幫助。
我不知道這是否有幫助——這肯定不是我希望解決方案采用的格式。
在完成這項工作后,我發現了一個使用數組的解決方案——似乎for循環可以工作,但正如您在解決方案中所展示的,它對用戶不友好。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的linux怎么用两个进程传值,关于linux:将变量脚本参数传递给另一个脚本,然后将qsub传递给程序...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux服务器管理书籍,linux服务
- 下一篇: linux 其他常用命令