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')

おすすめ記事