summaryrefslogtreecommitdiff
path: root/infloop
diff options
context:
space:
mode:
authorZachIR <zachir@librem.one>2022-08-24 02:17:33 -0500
committerZachIR <zachir@librem.one>2022-08-24 02:17:33 -0500
commitfb117fabcdc06a7898a88d6a5b6cbd7f1e29823e (patch)
treeac97fd009b2ea06498867b321f457277b12be0cb /infloop
parent70a1d51ef319ac54039350c0625e483a63ebdac8 (diff)
add infloop script to loop while other command is true/false
Diffstat (limited to 'infloop')
-rwxr-xr-xinfloop43
1 files changed, 43 insertions, 0 deletions
diff --git a/infloop b/infloop
new file mode 100755
index 0000000..dde7c86
--- /dev/null
+++ b/infloop
@@ -0,0 +1,43 @@
+#!/usr/bin/env bash
+
+MUSTBETRUE=y
+unset MUSTBEFALSE
+count=1
+for i in $@; do
+ count=$(printf "%s + 1\n" "$count" | bc)
+ [ -n "$BUFFERREAD" ] && BUFFERTIME="$i" && unset BUFFERREAD && continue
+ case "$i" in
+ "-t")
+ MUSTBETRUE=y
+ unset MUSTBEFALSE
+ ;;
+ "-f")
+ MUSTBEFALSE=y
+ unset MUSTBETRUE
+ ;;
+ "-c")
+ break 2
+ ;;
+ "-b")
+ BUFFERREAD="y"
+ ;;
+ "-*")
+ printf "Unsupported argument. Please use -t if exit on true, and -f if exit on false.\n"
+ exit 1
+ esac
+done
+
+if [ $# -ge $count ]; then
+ COMMAND="${@:$count}"
+else
+ printf "No command given!\n" && exit 1
+fi
+
+while true; do
+ if [ "$MUSTBEFALSE" ]; then
+ $COMMAND || exit 0
+ else
+ $COMMAND && exit 0
+ fi
+ sleep "${BUFFERTIME:-1}"
+done