Создание цикла for в моем сценарии bash

Возможно, с использованием последовательностей пробелов и символов без пробелов?

$ grep -Eo 'Exchange([[:space:]]+[^[:space:]]+){4}' << EOF
Meta Stack Exchange is where users like you discuss bugs, features, and 
support issues that affect the software powering all 167 Stack Exchange 
communities.
EOF
Exchange is where users like

или (стиль Perl, если ваш grep его поддерживает)

$ grep -Eo 'Exchange(\s+\S+){4}' << EOF
Meta Stack Exchange is where users like you discuss bugs, features, and 
support issues that affect the software powering all 167 Stack Exchange 
communities.
EOF
Exchange is where users like

Обратите внимание, что grep не совпадает между строками — для многострочных совпадений вы можете вместо этого использовать pcregrep .

0
20.01.2017, 19:47
3 ответа

Давайте воспользуемся циклом for для генерации целых чисел от 1 до 24, воспользуемся cd в подоболочке для перехода в подкаталоги из каталога и выполним сценарий:

for (( i = 1; i <= 24; ++i )); do
  ( cd "PKA$i/timestep_size/v_0.001/250eV" && ../ovitos /path/to/silica_defects.py )
done

Используя подоболочку, вы избегайте «возврата» к старому каталогу перед использованием cd для следующего подкаталога. С помощью && вы также избегаете попыток запустить программу, если каталог по какой-либо причине не существует.

Очевидно, вы также можете использовать

for i in {1..24}; do
  ( cd "PKA$i/timestep_size/v_0.001/250eV" && ../ovitos /path/to/silica_defects.py )
done

... но мне не нравится синтаксис {start..end} по эстетическим соображениям, и он также не дает вам возможности будьте более гибкими в выборе способа выполнения цикла (в других ситуациях).

1
28.01.2020, 02:25

В чем проблема:

for ((i=1;i<=24;i++)) ; do
    cd PKA${i}/timestep_size/v_0.001/250eV
    ../ovitos silica_defects.py
    cd $OLDPWD
done
0
28.01.2020, 02:25

Это задача для расширения скобок bash , {START..END} :

PKA{1..24}

Вы можете сделать:

for f in PKA{1..24}/timestep_size/v_0.001/250eV/; do ...; done

И для silica_defects .py , используйте абсолютный путь к файлу.

2
28.01.2020, 02:25

Теги

Похожие вопросы