将多个输入合并到 bash 脚本中的同一变量?

将多个输入合并到 bash 脚本中的同一变量?

我正在尝试运行一个 bash 脚本来根据硬盘温度控制我的风扇。

在脚本中,我可以将风扇添加到“ARRAY_FAN=/sys/class/hwmon/hwmon4/pwm6”

所以我想知道如何向 ARRAY_FAN 变量添加多个风扇,这样当脚本更改 ARRAY_FAN 上的 rmp 时,它实际上会更改所有风扇(pwm5、pwm6、pwm7 和 pwm8)上的 rpm

我可以将 /sys/class/hwmon/hwmon4/pwm5 作为单独变量添加到 pwm8,然后将它们添加到 ARRAY_FAN,或者将多行添加到 ARRAY_FAN 值吗?

这是我正在尝试使用的脚本 https://github.com/kmwoley/unRAID-Tools/blob/master/unraid_array_fan.sh

答案1

arr对于 Bash 版本 >= 4.0,您会发现一种有效的方法(一次填充数组)是使用 commandmapfile或其确切同义词readarray,如下所示:

mapfile -t arr < <(command)

$ declare -p arr使用 bash 手册中的所有可用选项和标志检查数组内容。

例如:

$ mapfile -t arr < <(seq 1 4)
$ declare -p arr
declare -a arr=([0]="1" [1]="2" [2]="3" [3]="4")

如果您的命令输出包含通配符(例如*.有其他方法可以做到这一点这里,@gniourf_gniourf 的 SO 帖子。

如果您的 Bash 版本早于 4.0,请指出不基于 的解决方案mapfile,如下所示:

IFS=$'\n' read -r -d $'\0' -a arr < <(command && printf '\0')

相关内容