bash 스크립트에서 여러 입력을 동일한 변수로 결합하시겠습니까?

bash 스크립트에서 여러 입력을 동일한 변수로 결합하시겠습니까?

하드 드라이브 온도에 따라 팬을 제어하기 위해 bash 스크립트를 실행하려고 합니다.

스크립트에서 "ARRAY_FAN=/sys/class/hwmon/hwmon4/pwm6"에 팬을 추가할 수 있습니다.

따라서 스크립트가 ARRAY_FAN의 rmp를 변경할 때 실제로 모든 팬(pwm5, pwm6, pwm7 및 pwm8)의 rpm을 변경하도록 ARRAY_FAN 변수에 여러 팬을 추가하는 방법을 알고 싶습니다.

/sys/class/hwmon/hwmon4/pwm5를 pwm8에 별도의 변수로 추가한 다음 이를 ARRAY_FAN에 추가하거나 ARRAY_FAN 값에 여러 행을 추가할 수 있습니까?

이것은 내가 사용하려는 스크립트입니다. https://github.com/kmwoley/unRAID-Tools/blob/master/unraid_array_fan.sh

답변1

arrBash 버전 >= 4.0의 경우 (한 번에 배열을 채우는) 효율적인 방법은 명령 mapfile이나 다음과 같은 정확한 동의어를 사용하는 것입니다 readarray.

mapfile -t arr < <(command)

$ declare -p arrBash 매뉴얼에서 사용 가능한 모든 옵션과 플래그를 사용하여 배열 내용을 확인하세요.

예를 들어:

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

명령 출력에 와일드카드가 포함된 경우 *이를 수행하는 다른 방법이 있습니다 (예:여기, @gniourf_gniourf의 게시물입니다.

Bash 버전이 4.0 이전인 경우 mapfile다음과 같은 비기반 솔루션을 표시하십시오.

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

관련 정보