Нет никакой потребности к фону приложения с амперсандом, когда это имеет встроенную опцию для того, чтобы сделать так. Такой имеет место с qemu (если Вы не удалили его):
% qemu-kvm --help | grep daemon
-daemonize daemonize QEMU after initializing
Использовать
eval ${VAR_NAME}='"${VAR_VALUE}"'
С eval
, Вы получаете в целом двукратное расширение. Если существуют какие-либо вещи в eval
оператор, который должен быть расширен только однажды, обычно лучше заключить им в кавычки таким способом, которым первое расширение ничего не делает (за исключением удаления кавычки), и второе расширение делает основное задание. В этом конкретном случае, первых урожаях расширения
STREET="${VAR_VALUE}"
который затем выполняется правильно во время второго расширения. При попытке сделать это наоборот, трудно гарантировать, что результат первого расширения остается неизменным во время второго расширения.
У меня также есть впечатление что первое eval
(прежде чем local VAR_NAME=${2}
является лишним.
"${PROMPT}"
– mike 09.06.2013, 23:47$2
состоит только из алфавитно-цифровых символов, нет никакого различия междуlocal VAR_NAME=${2}
иeval local VAR_NAME=${2}
, и если$2
содержит, например, пробелы, функция повредится так или иначе. Второеeval
необходимо, просто необходимо разобраться в заключении в кавычки. спасибо – Uwe 10.06.2013, 00:07eval
. Я зафиксировал его соответственно. – mike 10.06.2013, 00:08