Цикл, который у вас есть, кажется, должен работать, он перекомпилирует программу для значений N
, равных 10
и 20
.
Однако.
1 )Если вам нужны все 11 значений от 10 до 20, вместо этого вам придется использовать что-то вроде for x in {10..20}
или for ((x = 10 ; x <= 20 ; x++))
.
2 )Изменение исходного кода дважды кажется немного бесполезным, может быть чище оставить неизменяемую -базовую версию, которую вы затем модифицируете по мере необходимости, т.е.
sed -e 's/const int N = 10;/const int N = '"$x"';/g' base.cpp > test.cpp
g++ -Wall test.cpp -o test
./test
rm test.cpp test
или даже что-то вроде sed -Ee 's/^(const int N =)[^;]*;/\1 '"$x"';/g'
, чтобы полностью игнорировать значение в присваивании.
3 )Не используйте test.o
для исполняемого файла. Расширение .o
намекает на объектный файл, который вы получите, запустив gcc -c test.c
. Кроме того, в данном случае x
содержит только числа, но на всякий случай лучше заключить -в двойные кавычки, как указано выше.
Тем не менее, изменение программы для считывания числа из командной строки вместо перекомпиляции для каждого значения не будет слишком сложным. Это назначит первый аргумент N
, а затем напечатает его (, это в C, но, насколько мне известно, аргументы main
работают аналогично в C++):
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int N = 10;
if (argc > 1) N = atoi(argv[1]);
printf("N: %d\n", N);
return 0;
}
Установить статическую конфигурацию! Создайте следующее в вашем файле apps
conf:
[group]
[app] (distinct_name)
[Layer] {8}
[end]
Принимая во внимание, что цифры соотносятся с:
Создайте ярлык для своего приложения с помощью:
command --name distinct_name
Таким образом вы можете добавить несколько конфигов для одной команды. Остальные варианты::
[Hidden|IconHidden|FocusHidden] {yes|no}
Если ваша команда не поддерживает параметр -name
, найдите его имя с помощью xprop
.
Пожалуйста, прочтите здесь