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
。
为什么我在执行此脚本时会在第 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
。