2016-12-16 3 views
0

このスクリプトの実行時に8行目に構文エラーが発生するのはなぜですか?例: i = 2で、関連する行6と8をコンソールにコピーすると問題なく動作します。GPU温度条件のアプリケーションを終了させるbashスクリプトの構文エラー

#! /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 $1 ] 
     then 
      killall MATLAB 
     fi 
    done 
    sleep 1m 
done 

スクリプトではなくforループを使用する、I = 2を設定する場合に正しく、または少なくとも1つの作業を4のNvidiaのGPUを必要とすることに留意されたいです。私はUbuntu 16.04を実行しています。

答えて

0

これを試してください:あなたはあなたのためのfor loopdoを欠落していた

#! /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 $1 ] then 
      killall MATLAB 
     fi 
    done 
    sleep 1m 
done 

+0

ありがとうFarhad。私も他の人を削除しました:そして今はそれが動作します(あなたもそれを編集することができます)。 – mwater

+0

'else'は問題ありません。 ':'を実行することは、 'else'がないかのように何もしないのと同じです。 – chepner

関連する問題