#!/bin/bash COMMAND_FILE=/tmp/command COMMAND_FILE_TMP=/tmp/command_tmp lounge_light() { echo "not implemented" } lounge_light_toggle() { ./light.sh } cd "$(dirname $0)" touch "$COMMAND_FILE" chmod 666 "$COMMAND_FILE" while inotifywait -qq -e close_write "$COMMAND_FILE"; do mv "$COMMAND_FILE" "$COMMAND_FILE_TMP" sleep .1 # wait for possible further/parallel writes to end while IFS='' read -r line || [[ -n "$line" ]]; do echo "Text read from file: $line" case "$line" in lounge_light_toggle) lounge_light_toggle ;; lounge_light*) lounge_light "$COMMAND" ;; *) echo "ERROR; available commands:" >&2 echo "lounge_light lounge_light_toggle" >&2 ;; esac done < "$COMMAND_FILE_TMP" rm "$COMMAND_FILE_TMP" touch "$COMMAND_FILE" chmod 666 "$COMMAND_FILE" done