bash 脚本中的语法错误会终止基于 GPU 温度的应用程序

Syntax error in bash script that kills application conditioned on GPU temperature

为什么我在执行此脚本时会在第 8 行出现语法错误?设置例如i=2 并将相关的第 6 行和第 8 行复制到控制台工作正常。

#! /bin/bash

# kills MATLAB if a GPU reaches a threshhold temperature
while true
do
    gputemps=$(nvidia-smi --query-gpu=index,temperature.gpu --format=csv,noheader)
    for i in 2 4 6 8
        gputemp=$(echo ${gputemps} | awk -v var=$i '{print $var}')
        if [ $gputemp -ge  ] 
        then
            killall MATLAB
        fi
   done
   sleep 1m
done

请注意,脚本需要 4 个 Nvidia GPU 才能正常工作,如果设置 i=2 而不是使用 for 循环,则至少需要一个。我是 运行 Ubuntu 16.04。

试试这个:

#! /bin/bash

# kills MATLAB if a GPU reaches a threshhold temperature
while true
do
    gputemps=$(nvidia-smi --query-gpu=index,temperature.gpu --format=csv,noheader)
    for i in 2 4 6 8
        do
        gputemp=$(echo ${gputemps} | awk -v var=$i '{print $var}')
        if [ $gputemp -ge  ] then
            killall MATLAB
        fi
   done
   sleep 1m
done

您的 for loop 缺少一个 do