Предложите пользователю предложение и сохраните его, не будучи взволнован пробелами

Нет никакой потребности к фону приложения с амперсандом, когда это имеет встроенную опцию для того, чтобы сделать так. Такой имеет место с qemu (если Вы не удалили его):

% qemu-kvm --help | grep daemon
-daemonize      daemonize QEMU after initializing
2
10.06.2013, 02:33
1 ответ

Использовать

eval ${VAR_NAME}='"${VAR_VALUE}"'

С eval, Вы получаете в целом двукратное расширение. Если существуют какие-либо вещи в eval оператор, который должен быть расширен только однажды, обычно лучше заключить им в кавычки таким способом, которым первое расширение ничего не делает (за исключением удаления кавычки), и второе расширение делает основное задание. В этом конкретном случае, первых урожаях расширения

STREET="${VAR_VALUE}"

который затем выполняется правильно во время второго расширения. При попытке сделать это наоборот, трудно гарантировать, что результат первого расширения остается неизменным во время второго расширения.

У меня также есть впечатление что первое eval (прежде чем local VAR_NAME=${2} является лишним.

3
27.01.2020, 22:06
  • 1
    Sry, но Ваш ответ ничего не изменяет. Первая оценка необходима для передачи быстрого аргумента не только как строки, но также и как переменная как "${PROMPT}" –  mike 09.06.2013, 23:47
  • 2
    Это работает на меня.Попробуйте: Если $2 состоит только из алфавитно-цифровых символов, нет никакого различия между local VAR_NAME=${2} и eval local VAR_NAME=${2}, и если $2 содержит, например, пробелы, функция повредится так или иначе. Второе eval необходимо, просто необходимо разобраться в заключении в кавычки. спасибо –  Uwe 10.06.2013, 00:07
  • 3
    ! У меня была функция, встроенная в другой сценарий, который имел подобное eval. Я зафиксировал его соответственно. –  mike 10.06.2013, 00:08

Теги

Похожие вопросы