Чтобы создать собственную группу, добавьте users.groups.johns = {name = "John's"; members = "Джон"; gid = 1666};
.
См. также man configuration.nix
, где описаны все параметры.
На мой взгляд, вам лучше просто сделать более читабельным:
var1="$value" var2="$value" var3="$value" var4="$value" var5="$value" var6="$value" var7="$value" var8="$value" var9="$value" var10="$value"
Но если вам нужен очень короткий способ добиться этого, попробуйте:
declare var{1..10}="$value"
Отредактировано:с использованием раскрытия фигурных скобок вместо printf и объявления вместо eval, что может быть опасно в зависимости от того, что находится в $value
.
См. РЕДАКТИРОВАТЬ1 :Вы все еще можете использовать расширения фигурных скобок в новом случае:
declare var{T,z,3}="$value"
Это безопаснее, чем подход printf
в комментариях, потому что он может обрабатывать пробелы в $value
.
let
выполняет арифметическую оценку. В bash
это эквивалентно ((... ))
. Вот почему ваш код работает только для целых чисел.
Использование массива вместо переменных со специальными именами:
var=( "$value" "$value" "$value" "$value" "$value" "$value" "$value" "$value" "$value" "$value" )
printf 'var[5]=%s\n' "${var[5]}"
или ассоциативный массив,
declare -A var
var=( ["T"]=$value ["z"]=$value [3]=$value )
printf 'var[T]=%s\n' "${var["T"]}"
Вы также можете сделать цикл:
for varname in var0 var1 varT varfoo; do
declare -n var="$varname"
var=$value
done
Этот цикл перебирает имена переменных. В теле цикла создается ссылочная переменная имени, которая ссылается на текущую переменную цикла. Когда значение переменной ссылки имени установлено, устанавливается именованная переменная.
Value='-%% this is a test %%-'
for VarName in myVar1 myVar2 myOtherVar; do printf -v "$VarName" %s "$Value"; done