Личинка ext2 модуль также понимает ext3 и ext4, поскольку различия минимальны. Сам модуль встроен в личинку core.img
файл (при использовании расширения [234] для начальной загрузки/), который обычно копируется в секторы после главной загрузочной записи перед любыми разделами, запускается, и код в главной загрузочной записи просто загружает те последующие секторы.
Обертывания значения переменной с двойными кавычками недостаточно для защиты любых вложенных имен переменной. Таким образом, то, что происходит, Вы устанавливаете $params
, но когда Ваша программа выполняется, $params
разворачивали те переменные, таким образом, их не стало, когда Вы оцениваете $params
позже.
Скажите, что у нас есть эта ситуация, подобная Вашему.
$ nested_var="nested secret"
$ params="the value is: ${nested_var}"
Когда мы оцениваем эти переменные:
$ echo $nested_var
nested secret
$ echo $params
the value is: nested secret
Таким образом, мы видим что переменная в $params
определение было уже расширено, таким образом, это больше не находится в форме $nested_var
, это теперь netsted_secret
.
Используя одинарные кавычки помог бы защитить $params
определение.
$ params='the value is: $nested_var'
$ echo $params
the value is: $nested_var
Но теперь вопрос состоит в том, как мы говорим Bash разворачивать эту переменную позже. Вот то, где Вы могли использовать команду eval
.
$ nested_var="nested secret"
$ eval "echo $params"
the value is: nested secret
Изменение $nested_var
:
$ nested_var="another nested secret"
$ eval "echo $params"
the value is: another nested secret
eval
команда имеет плохого представителя So, я думаю, что поощрил бы Вас делать то, что Вы пытаетесь использовать функции вместо этого.
Я испытал бы желание создать функцию, что Вы передаете в нее параметры, и функция возвратилась бы созданный $params
строка назад.
$ genparam () { printf -- "-game csgo -usercon +map %s -strictportbind -ip %s -port %s +clientport %s +tv_port %s -maxplayers %s\n" "$1" "$2" "$3" "$4" "$5" "$6"; }
Вот расширенное представление той остроты:
$ genparam () {
printf -- "-game csgo -usercon +map %s -strictportbind -ip %s -port %s +clientport %s +tv_port %s -maxplayers %s\n" \
"$1" "$2" "$3" "$4" "$5" "$6"; \
}
Теперь, когда мы вызываем нашу функцию genparm()
мы передаем его аргументы, что мы хотим, чтобы это использовало как так:
$ genparam $defaultmap $ip $port $clientport $sourcetvport $maxplayers
-game csgo -usercon +map de_dust2 -strictportbind -ip 0.0.0.0 -port 27015 +clientport 27005 +tv_port 27020 -maxplayers 16
Вероятно, не лучшее решение, но можно преобразовать Вас переменная в функцию и использовать его как это
parms () {
echo "-game csgo -usercon +map ${defaultmap} -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} -maxplayers ${maxplayers}"
}
#...
fn_debugserver() {
fn_autoip
$executable $(params)
}
Необходимо установить детские коляски после того, как fn_autoip будет выполнен (или в конце той функции). Переменные установлены в порядке, который они разоблачают в файле.
Вы 'перезагружаете' переменную путем установки его снова.