Нет. Вся суть LVM в том, что вы можете назначать пространство для LV независимо от того, где хранятся данные.
Кроме того, на самом деле это будет сложно, поскольку для этого нет команд.
Попробуйте заменить:
attr_marksweep_threadcount="-O java.lang:type=GarbageCollector,name='PS MarkSweep' -A LastGcInfo -K GcThreadCount"
на:
attr_marksweep_threadcount='-O java.lang:type=GarbageCollector,name="PS MarkSweep" -A LastGcInfo -K GcThreadCount'
Когда вы делаете это (перефразируя ваш более короткий пример в комментарии):
mkdir "foo bar"
parms="-l 'foo bar'"
ls $parms
Переменная parms
разбивается на слова вдоль любого пробела, не обращая внимания на кавычки, так что получается.
-l
, 'foo
, и bar'
(три аргумента).
В исходном примере была та же проблема с attr_marksweep_threadcount
, и в итоге один из аргументов содержал java.lang:type=GarbageCollector,name='PS
, а остальная часть процитированной строки - в другом аргументе. Предположу, что вашей java это не понравилось.
Если мы закавычим переменную, содержащую параметры:
ls "$parms"
Мы получим ls
, вызванный с помощью -l 'foo bar'
(один аргумент). Кавычки в переменной предотвращают разделение слов (и сглаживание имен файлов), а кавычки внутри переменной - нет.
Эту проблему сложно решить с простыми переменными оболочки, но поскольку в Bash есть массивы, вы можете использовать один из них и поместить каждый аргумент в отдельный элемент массива:
array=("-l" "foo bar")
ls "${array[@]}"
"${array[@]}"
расширяется до эквивалента всех членов массива, взятых в кавычки.
В оболочках без массивов приходится использовать некоторые обходные пути. позиционные параметры могут быть расширены с помощью $@
аналогично массивам:
set -- "-l" "foo bar"
ls "$@"
Или, поскольку разбиение слов производится только по символам, установленным в IFS
, мы можем сделать так, чтобы оболочка разбивалась не на пробелы, а на что-то другое.
IFS=#
parms='-l#foo bar'
ls $parms
# though IFS stays set to the hash sign after this
Вывод bash -x
в вашем примере пытается показать, что происходит, но поскольку он пытается показать в одинарных кавычках строку, содержащую одинарную кавычку, вывод получается немного беспорядочным. Это:
'java.lang:type=GarbageCollector,name='\''PS'
разбирается как 'java.lang:type=GarbageCollector,name='
, \'
, и 'PS'
все вместе, т.е. две строки в одинарных кавычках, и одна в кавычках. Что выглядит красивее в двойных кавычках: "java.lang:type=GarbageCollector,name='PS"
.