Изменение хорошего уровня процесса вряд ли будет влиять на значение системной нагрузки. Значение системной нагрузки является средней длиной очереди выполнения, которая является в основном количеством процессов, желающих использовать ЦП.
Если Вы работаете, зависящий от ЦП процесс (rsync не, но просто например), то он будет всегда хотеть использовать процессорное время каждый раз, когда существуют некоторые доступные. Так как это всегда хочет работать, это внесет значение загрузки 1,0 к значению системной нагрузки. Не имеет значения, каков процесс хороший уровень, потому что средняя длина очереди выполнения незатронута по приказу процессов в очереди выполнения.
Вы можете использовать встроенный
встроенный для оценки имени переменной. Пример, который иллюстрирует точку:
i="a"
eval ${i}lphabet="abcde"
echo $alphabet
Однако, извлечение значения из $ {I} lphabet
, требует другого трюка. Вы должны использовать значение переменной в качестве имени переменной (по существу указатель). Синтаксис будет:
#declare a variable that names the other variable:
pointer=${i}lphabet
#dereference the name with the ! syntax:
echo ${!pointer}
применяется к вашему случаю:
for i in ${alphabet[@]}; do
pointer="$i"array
eval ${pointer}[0]=0
done
Однако это плохой дизайн ... Вы должны найти более обычный способ обращения с этим.
Вам придется использовать EVAL
Использование содержимого переменных в качестве имени переменных:
for i in ${alphabet[@]}; do
eval "$i[0]=1"
done
EVAL
принимает свои аргументы и оценивает его в контексте Shell, т.е. не как отдельная оболочка, попытки сделать это без EVAL
приведет к началу отдельных оболочек, и, следовательно, набор переменных не будет доступен в первой оболочке.
Могу ли я предложить другим способом (через ассоциативный массив) для выполнения вашей задачи? Это кажется более умным и приемлемым:
declare -A array
for i in ${alphabet[@]}; do
array[$i]=0
# or array[${i}0]=0 if you need
done
, чтобы вы могли пережить его через для I в $ {! Array [@]}
или так же для I в $ {Alphabet [@]}