Вызов командной строки с пробелами из переменной в сценарии Bash [дубликат]

Я думал, что это будет легко, но я уже потратил на это несколько часов.

Я хочу запустить следующую команду CMake из сценария Bash. В терминале я бы набрал

cmake -G "Unix Makefiles" .

, и он работает. Если я скопирую это точно внутри сценария Bash, он также будет работать.

Но сценарий предназначен для работы на нескольких платформах, и это может быть "MSYS Makefiles" вместо "Unix Makefiles". Поэтому я хочу поместить команду в переменную, содержимое которой зависит от платформы, и выполнить ее. Однако здесь я застрял. Я перепробовал все возможные комбинации одинарных / двойных кавычек, но я ничего не добился.

Я хочу что-то вроде

c="cmake . -G \"Unix Makefiles\""
exec $c

, но это всегда приводит к некоторой вариации следующего:

CMake Error: Could not create named generator "Unix

Я понимаю, что мог бы сделать

if test [... this is Unix ...]
    cmake . -G "Unix Makefiles"
else
    cmake . -G "MSYS Makefiles
fi

, но так как этот вызов должен выполняться несколько раз Я бы предпочел этого избежать.

Есть предложения?

9
задан Peter Mortensen 18 November 2019 в 12:47
поделиться