С помощью 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 нужный индекс следующим образом:
создайте переменную окружения i
для индекса
export i
создайте файл шаблона с нужным индексом, замененным переменной 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:$]}
}
перебираем значения i
, подставляя только значение i
for i in {0..31}; do envsubst '$i' < template; done