код в вашем примере должен работать, если следующая команда действительна при выполнении в командной строке, написанной именно так:
/usr/local/apache/bin/apachectl -D FOREGROUND -c Include conf/dev.conf "[email protected]"
Быстрый поиск веба приводит меня к мысли, что вы хотите это (обратите внимание на дополнительные двойные кавычки):
/usr/local/apache/bin/apachectl -D FOREGROUND -c "Include conf/dev.conf" "[email protected]"
Вот как добиться того, чтобы просто и надежно с массивами, таким образом, что уклоняется «со ссылкой в кавычках» вопросы:
#!/bin/bash
declare -a params=()
params+=(-D FOREGROUND)
params+=(-c "Include conf/dev.conf")
/usr/local/apache/bin/apachectl "${params[@]}" "[email protected]"
params
массив содержит 4 строки ("-D"
, "FOREGROUND"
, "-c"
и "Include conf/dev/conf"
). Расширение массива ("${params[@]}"
, обратите внимание, что здесь важны двойные кавычки) расширяет их до этих 4 строк, как если бы вы написали их с двойными кавычками вокруг них (т. Е. Без дальнейшего разбиения слов).
Использование массивов с таким расширением является гибким и надежным способом создания команд, а затем выполняется с простым расширением.
Я немного изменил свой вопрос. 'params' обрабатывается как один параметр – SLY
В приведенном выше примере я хочу, чтобы' params' рассматривался как два параметра + некоторые параметры $ @ – SLY