Is there a possibility to watch a command until the output remains the same?
watch -g, one can check if a commands results changed and use this as a trigger to go to the next step in a script. But what if I want to check for the moment a command returns the same output for two consecutive (or a defined number of consecutive) runs?
watch --exit-on-constant-output --number-of-minimum-identical-runs=10 <command>
Currently the only way that comes into my mind would be a script that saves the output in the first run and then compares like:
#!/bin/bash breaklimit=4 n=0 old=$(command) while ((1)) ; do current=$(command) if [[ "$old" == "$current" ]] ; then echo "command gave same output" n=$((n+1)) echo "number of identical, consecutive runs: $n" if [[ $n -eq $breaklimit ]] ; then break fi else echo "command gave different output" old="$current" n=0 sleep 2 fi done echo "run next command"
Works fine for e.g. using
$(($RANDOM/10000)) as command. But maybe there is a more elegant way?
PS: Maybe some made-up use case will help. Let's say I connected a thermometer to my processing machine and want to start production once the temperature has leveled. So I will query the thermometer every 60 seconds for the current temperature.