我想準備幾個 .sh 檔案來運行一些模擬。
假設我要多次運行的命令是:
node_list = "Positive,Negative"
for nodes in $node_list; do
python3.7 path_to_script/the_script -m "file_mutation1.csv" -r "results_mutation1.csv"
done
在哪里
- the_script 是我要運行的腳本
- -m 是用于運行模擬的檔案
- -r 保存結果的檔案
我有一個突變體串列,所以基本上我想創建一個回圈給我
mutant_list = [TP53, NFKB, ABL1]
for nodes in $node_list; do
python3.7 path_to_script/the_script -m "file_mutation_TP53.csv" -r "results_mutation_TP53.csv"
done
for nodes in $node_list; do
python3.7 path_to_script/the_script -m "file_mutation_NFKB.csv" -r "results_mutation_NFKB.csv"
done
for nodes in $node_list; do
python3.7 path_to_script/the_script -m "file_mutation_ABL1.csv" -r "results_mutation_ABL1.csv"
done
等等在一個 .sh 檔案中。
但是,由于我有 100 個突變體,我想為每 5 個突變體創建一個單獨的 .sh 檔案。
預期的輸出將是
run_sim_1.sh其中包含(為清楚起見省略for nodes in $node_list; do / done)
python3.7 path_to_script/the_script -m "file_mutation1.csv" -r "results_mutation1.csv"
python3.7 path_to_script/the_script -m "file_mutation2.csv" -r "results_mutation2.csv"
python3.7 path_to_script/the_script -m "file_mutation3.csv" -r "results_mutation3.csv"
python3.7 path_to_script/the_script -m "file_mutation4.csv" -r "results_mutation4.csv"
python3.7 path_to_script/the_script -m "file_mutation5.csv" -r "results_mutation5.csv"
run_sim_2.sh其中包含
python3.7 path_to_script/the_script -m "file_mutation6.csv" -r "results_mutation6.csv"
python3.7 path_to_script/the_script -m "file_mutation7.csv" -r "results_mutation7.csv"
python3.7 path_to_script/the_script -m "file_mutation8.csv" -r "results_mutation8.csv"
python3.7 path_to_script/the_script -m "file_mutation9.csv" -r "results_mutation9.csv"
python3.7 path_to_script/the_script -m "file_mutation10.csv" -r "results_mutation10.csv"
uj5u.com熱心網友回復:
您可以使用此腳本:
#!/bin/bash
node_list=( 1 2 3 4 5 6 7 8 9 10 11 )
counter=1
shcounter=1
for node in "${node_list[@]}"
do
echo "python3.7 path_to_script/the_script -m \"file_mutation$node.sh\" -r \"results_mutation$node.csv\"" >>run_sim_${shcounter}.sh
if [[ $counter -ge 5 ]]
then
(( shcounter = shcounter 1 ))
counter=0
fi
(( counter = counter 1 ))
done
- 我將節點命名為 1,2,3,4,... 只是為了向您展示它們在每個 .sh 檔案中分為 5 個,但它們可以有任何名稱。我不認為它們遵循數字序列是理所當然的。它適用于任何東西。
- 變數:計算回圈
counter中已處理的節點數。for - 變數
shcounter:計算已創建的 .sh 檔案的數量。 - 每次處理一個節點時,該節點的命令都會寫入當前的 .sh 檔案(當前由 shcounter 指定)。計數器也增加。如果大于 5,則重置為 0,并且 shcounter 遞增。
運行此腳本會創建 3 個檔案。run_sim1.sh(節點 1->5)、runsim2.sh(節點 6->10)、runsim3.sh(節點 11)。我想要一些不能被 5 整除的東西來表明我的演算法可以處理它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/532740.html
標籤:重击Unix
