Ищете bash-скрипт для запуска программы с разными входами на сервере Linux - PullRequest
1 голос
/ 03 января 2011

Я знал, как написать этот bash один раз, но больше не могу понять.

Как видно из названия, это должен быть скрипт, предназначенный для запуска на сервере Linux.

Моя цель - выполнять эти команды, не вводя их снова и снова. (Я запускаю входные файлы при каждом запуске.)

bsprun -npes 1 ./a.out file1.txt file2.txt
bsprun -npes 2 ./a.out file1.txt file2.txt
bsprun -npes 3 ./a.out file1.txt file2.txt
bsprun -npes 4 ./a.out file1.txt file2.txt
bsprun -npes 5 ./a.out file1.txt file2.txt
bsprun -npes 6 ./a.out file1.txt file2.txt
bsprun -npes 7 ./a.out file1.txt file2.txt
bsprun -npes 8 ./a.out file1.txt file2.txt

Ответы [ 3 ]

4 голосов
/ 03 января 2011

На самом деле, после прочтения вашего описания, возможно, вам захочется:

#!/bin/bash

bsprun -npes "$1" ./a.out "$2" "$3"

chmod +x сценарий затем назовите его как

./myscript 1 file1.txt file2.txt
./myscript 2 file2.txt file3.txt
./myscript 3 file4.txt file5.txt
...

Если ваши входные файлы изменяются в соответствии с шаблоном, мы могли бы сделать скрипт немного умнее, но неясно, как выглядят ваши имена файлов.

Чтобы получить точный вывод, который вы разместили, поместите его в цикл вроде:

#!/bin/bash

for i in {1..8}; do
  bsprun -npes $i ./a.out file1.txt file2.txt
done
1 голос
/ 03 января 2011

Если вы хотите делать это постоянно, используйте это:

  #!/bin/bash

i="1"

while true;
do
    if [ $i -eq 9]; then
       i=1
    fi
    bsprun -npes $i ./a.out file1.txt file2.txt
    i = `expr $i + 1`
done
0 голосов
/ 09 декабря 2012

Звучит так, будто вы хотите научиться писать на BASH, вы можете взглянуть на

https://github.com/37signals/sub

, это очень помогло мне в организации моих сценариев

также Google - ваш друг

bash script loop example

вышеупомянутый поиск возвращает массу результатов именно то, что вы ищете

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...