Bash
使用並行執行具有來自列表的多個參數的程序
我有一個通過命令行(Ubuntu)執行的 bash 程序,如下所示:
./extract_field.sh ABC001
ABC001
我想從給定的 shapefile 中提取的欄位 ID在哪裡。
list.txt
要使用多個 ID 執行此腳本,我首先在文件中每行保存一個 ID :ABC001 ABC014 ABC213 ABC427
然後使用以下命令呼叫腳本
parallel
:parallel -a list.txt ./extract_field.sh
到目前為止,一切都很好。
但是,我計劃進行更改
extract_field.sh
,因此它需要兩個參數,而不僅僅是一個。如果我只是更改我的文本文件以像這樣每行容納兩個參數,上述工作流程是否仍然有效?ABC001 arg2a ABC014 arg2b ABC213 arg2c ABC427 arg2d
有了這個改變,我希望
parallel -a list.txt ./extract_field.sh
表現得像./extract_field.sh ABC001 arg2a ./extract_field.sh ABC014 arg2b
等等。
那正確嗎?
我可以在詢問之前對其進行測試,但我決定先詢問,因為腳本中的這個更改可能需要我幾個小時才能完成(儘管這聽起來像是一個簡單的更改)。
您可以通過在命令語法中指定列分隔符來為單個命令提供多個參數並行使用您的範例:
parallel --colsep ' ' -a list.txt ./extractfield.sh {1} {2}
將提供結果
./extract_field.sh ABC001 arg2a ./extract_field.sh ABC014 arg2b
鑑於您的文件
list.txt
包含ABC001 arg2a ABC014 arg2b
您可以使用
cp
或mv
因為它們都需要多個位置參數來測試它。