Criando uma macro com .sh

0

então eu gostaria de escrever um script que será usado da seguinte maneira.

./MakeMacro 1 

A forma básica do script é assim:

#!/bin/sh                                                                                             
#########################################                                                             
## ${1} will be number of particles #####                                                             
#########################################
cat > runPgun_${1}_new.mac << +EOF

#Lines of code here

+EOF

Dentro do arquivo (runPgun _ $ {1} _new.mac) Eu quero repetir essas linhas de código $ {1} vezes:

/gps/source/add 1
/gps/particle/neutron 

Onde, obviamente, se houvesse um loop 'for' eu poderia escrever "... / add 1 .... / add 2 .... / add 3..etc". O número de entrada determina quantas vezes eu quero essas linhas adicionadas ao código. Eu não consigo raciocinar onde colocar o loop. Por favor ajude!

    
por Jaime Arturo Gomez 16.10.2014 / 17:30

1 resposta

0

Com base no seu código existente, estou supondo que o arquivo .mac não existirá ou (se houver), você quer que ele seja sobrescrito.

#!/bin/sh
#########################################
## ${1} will be number of particles #####
#########################################

# If file already exists, delete it.
[ -f runPgun_${1}_new.mac ] && rm runPgun_${1}_new.mac

for PARTICLE in $(seq 1 $1); do
echo /gps/source/add $PARTICLE >> runPgun_${1}_new.mac
echo /gps/particle/neutron >> runPgun_${1}_new.mac
done

Não ficou claro para mim se o nêutron deve ser executado após cada adição, ou somente após todos os acréscimos. Se for executado apenas uma vez, mova o segundo eco para depois do done .

Resultados:

~> ./MakeMacro.sh 5
~> cat runPgun_5_new.mac
/gps/source/add 1
/gps/particle/neutron
/gps/source/add 2
/gps/particle/neutron
/gps/source/add 3
/gps/particle/neutron
/gps/source/add 4
/gps/particle/neutron
/gps/source/add 5
/gps/particle/neutron
    
por 16.10.2014 / 17:50

Tags