Места для изучения Linux [закрыто]

С помощью here-документа:

for i in {0..31}; do 
cat << EOF
cr_v8_sel${i} : cross cp_v8_en, cp_sel${i} {
   ignore_bins ig_v8_sel${i} = binsof(cp_v8_en) && binsof(cp_sel${i}) intersect {[0:3],[5:$]}; 
}
EOF
done

Обратите внимание, что если вы используете этот метод, вы должны быть внимательны к тому, чтобы в here-документе не было ничего другого, что может быть расширено оболочкой (в этом случае вещи вроде {[0:3],[5:$]} выглядят так, как будто они могут быть, но на самом деле это не так - по крайней мере, не в bash). По сути аналогичный (но более безопасный) подход с использованием команды envsubst из GNU gettext может заменить only нужный индекс следующим образом:

  1. создайте переменную окружения i для индекса

    export i
    
  2. создайте файл шаблона с нужным индексом, замененным переменной i

    $ cat template
    cr_v8_sel${i} : cross cp_v8_en, cp_sel${i} {
     ignore_bins ig_v8_sel${i} = binsof(cp_v8_en) && binsof(cp_sel${i}) intersect {[0:3],[5:$]}
    }
    
  3. перебираем значения i, подставляя только значение i

    for i in {0..31}; do envsubst '$i' < template; done
    
-3
31.07.2014, 19:48
0 ответов

Теги

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