Скажут, ради простоты у меня есть файл (пожалуйста, простите мой бесполезный псевдокод)Замена строки в файл с помощью Баша + переменных окружений
file.txt
std::string filename = "filename.txt"
double v_no = 2.0;
const int v_minor = 0; // < --- Target
std::string random_var1 = "Hello"
std::string random_var2 = "Hello 2"
int main()
{
// ..
}
И у меня есть файл Баш в том же каталоге - set_version.sh
Я хочу заменить строку в этом файле этим скриптом - в частности «v_minor = 0» на «v_minor = $ VARIABLE» - в моем случае переменная будет экологическим сервер.
Так что скажем, что он был успешно запущен пару раз. Теперь строка читает «v_minor = 2». Я все еще хочу, чтобы один и тот же скрипт set_version.sh менял 2 на любую переменную.
В окне сборки моего программного обеспечения у меня есть пакетный файл, который изменяет «v_minor =% d» на «v_minor =% VERSION%».
Мой вопрос: как я делаю что-то подобное в bash? Например. игнорируя то, что десятичная строка находится в строке и меняет ее на переменную.
То, что я получил до сих пор:
set_version.sh
#!/bin/bash
VERSION=75
sed -i '' 's/v_minor = %d/v_minor = $VERSION/g/' file.txt
Version вар существо набор только для целей тестирования.
Это возвращает ошибку
sed: 1: "s/v_minor = %d/v_minor ...": bad flag in substitute command: '/'
Я бегу Mac OS X Yosemite для этого теста.
Опять же, по существу,% d может быть любым целым числом.
Спасибо
только для подтверждения, '% d' не будет соответствовать ни одному целому числу, вам нужно использовать' [[: digit:]] [[: digit:]] * '. Удачи. – shellter