Чтобы передавать переменные по ссылке в bash
4.3+, вы можете использоватьtypeset -n
:
pad_array() {
typeset -n _array="$1"
typeset _n="$2" _pad _i
printf -v _pad '%*s' "$_n"
for _i in "${!_array[@]}"; do
((${#_array[_i]} < _n)) || continue # remove this line to also truncate
_array[_i]+=$_pad
_array[_i]=${_array[_i]:0:_n}
done
}
array=(foo b bàz '')
pad_array array 20
Функцияtypeset -n
nameref заимствована из ksh93
, однако обратите внимание, что в отличие от ksh93
описанная выше функция не будет работать для заполнения переменных массива, имя которых используется в функции (, поэтому символ подчеркивания префикс для них, чтобы ограничить риск столкновения ).
Исправлено! Только что скачал драйвер openrazer.github.io для ноутбука, и вентиляторы заработали. У меня до сих пор нет ручного управления, так как кажется, что датчики lm -/управление вентиляторами по-прежнему не видят вентиляторы через ШИМ, но эти драйверы лучше справляются с охлаждением, чем все, что использовалось раньше.