0

以下は私のコードです。しかし、bashは単語分割を行っているため、失敗しました。単語が分割されないようにスクリプトを作成する方法。

namaSensor=$(sensors | egrep "°C" | awk '{print $0}' | awk -F ':' '{print $1}')
for sensor in $namaSensor
do
    if [ $(sensors | grep -c "$sensor") -ne 0 ]
    then
        currentTemperature=$(sensors | egrep "$sensor" | awk '{print $0}' | awk -F '+' '{print $2}' | cut -c 1-4 | awk -F '.' '{print $1}')
        maxTemperature=$(sensors | egrep "$sensor" | awk '{print $0}' | awk -F '+' '{print $3}' | cut -c 1-4 | awk -F '.' '{print $1}')
        if [ $currentTemperature -lt $maxTemperature ]
        then
            printf "current temperature is %d°C and the maximum allowed temperature is %d°C\n" "$currentTemperature" "$maxTemperature"
            printf "temperature is within the maximum allowed temperature\n"
            echo "$sensor"
        else
            printf "current temperature is %d°C and the maximum allowed temperature is %d°C\n" "$currentTemperature" "$maxTemperature"
            printf "temperature is more than the maximum allowed temperature\n"
            #exit 255
        fi
    fi
done.

これは私のユニットのセンサーの出力です。

acpitz-virtual-0
Adapter: Virtual device
temp1:        +40.0°C  (crit = +111.0°C)
temp2:        +40.0°C  (crit = +111.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +34.0°C  (high = +87.0°C, crit = +105.0°C)
Core 0:         +31.0°C  (high = +87.0°C, crit = +105.0°C)
Core 1:         +22.0°C  (high = +87.0°C, crit = +105.0°C)

助けてください

4

1 に答える 1

0

私が理解しているように、配列は次のように分割されています。

物理的

ID

0

等々。この動作を変更するには、Internal Field Separator (IFS) を改行に変更する必要があります。したがって、コードは次のようになります。

IFS=$'\n'
nameSensor=$(sensors | egrep "°C" | awk '{print $0}' | awk -F ':' '{print $1}')
for sensor in $nameSensor
do
    if [ $(sensors | grep -c "$sensor") -ne 0 ]; then
        currentTemperature=$(sensors | egrep "$sensor" | awk '{print $0}' | awk -F '+' '{print $2}' | cut -c 1-4 | awk -F '.' '{print $1}')
        maxTemperature=$(sensors | egrep "$sensor" | awk '{print $0}' | awk -F '+' '{print $3}' | cut -c 1-4 | awk -F '.' '{print $1}')
        if [ $currentTemperature -lt $maxTemperature ]; then
            printf "current temperature is %d°C and the maximum allowed temperature is %d°C\n" "$currentTemperature" "$maxTemperature"
            printf "temperature is within the maximum allowed temperature\n"
            echo "$sensor"
        else
            printf "current temperature is %d°C and the maximum allowed temperature is %d°C\n" "$currentTemperature" "$maxTemperature"
            printf "temperature is more than the maximum allowed temperature\n"
            #exit 255
        fi
    fi
done
于 2013-03-15T08:16:30.373 に答える