shスクリプトのsleepとパラメータでエラーが発生しました。 [閉じる]

shスクリプトのsleepとパラメータでエラーが発生しました。 [閉じる]

私はこのようなことをしています

#!/bin/bash
END=3
time_w = 1
for ((i=1;i<=END;i++)); do
    # do something
    sleep time_w
done

しかし、私は得た。

sleep: invalid time interval ‘time_w’

答え1

2つの間違いを犯しました。

  • では、bash変数宣言の周りにスペースがあってはならないので、=宣言は次のようになります。

    time_w=1
    
  • コマンドでは、変数自体ではなく変数sleep time_wの値を取得する必要があります。time_w"$time_w"

    sleep "$time_w"        
    

答え2

を使用する必要があります。変数が算術式()内にない場合は、変数の前に付ける必要が$time_wあります。$bash((...))

#!/bin/bash
END=3
time_w=1
for ((i=1;i<=END;i++)); do
    # do something
    echo "$i sleeping for $time_w"
    sleep "$time_w"
done

関連情報