Вы можете попробовать pvresize --setphysicalvolumesize 6.51G /dev/sda1
.
Я почти уверен, что это не сработает, потому что, скорее всего, lv_swap
выделен за границей 6.51G.
Поэтому я думаю, что вам следует удалить и заново создать lv_swap
:
swapoff /dev/VolGroup/lv_swap
lvremove /dev/VolGroup/lv_swap
pvresize --setphysicalvolumesize 6G /dev/sda2
Затем измените размер раздела примерно до 6.5G (или чуть больше). После этого нужно выполнить pvresize /dev/sda2
, чтобы вернуть место, образовавшееся в результате "немного большего". Затем вы можете воссоздать lv_swap
:
lvcreate -n lv_swap -l 100%FREE VolGroup
mkswap /dev/VolGroup/lv_swap
swapon /dev/VolGroup/lv_swap
Если вы используете оболочку, которая поддерживает локальные переменные, такие как ksh, bash или zsh, поместите весь код в функции и объявите все переменные локальными.
С простым sh вы можете использовать eval
для выполнения раскрытия переменной перед использованием значения. Статус возврата содержит только цифры, так что вам даже не нужны сложные кавычки.
eval "unset return_status; return $return_status"
Я использовал STDOUT, чтобы сохранить копию содержимого переменной:
# Unset a variable and then use its value afterwards
echo $_return_val | { unset _return_val; return "$(cat)"; }
Поскольку ваше желание и ваша идея решения противоречат неуказанным частям стандарта, я рекомендую использовать промежуточную переменную для хранения значения.
Это, конечно, имеет смысл только в том случае, если вы хотите применить метод более чем к одной переменной. Вы можете использовать переменную $REPLY
, которая является неотъемлемой частью различных оболочек.
Обратите внимание, что нет никаких гарантий, что { cmd; }
не создает подоболочку, поэтому даже вызов unset
в такой конструкции может не относиться к основной оболочке.
Использование
echo "$_return_val" && unset _return_val
должно быть тем, что вам нравится во всех случаях, которые я имею в виду.
Вы можете использовать функцию с локальными переменными
return_exit () {
local code=${!1}
unset "$1"
return "$code"
}
Тогда назовите это как:
return_exit _return_val