aboutsummaryrefslogtreecommitdiff
path: root/bin/ax.sh
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2017-04-05 20:06:39 +1200
committerTom Ryder <tom@sanctum.geek.nz>2017-04-05 20:46:47 +1200
commitc8ab406749124d2e762ad5cf53963070113afd0f (patch)
tree54c9721a06957ebe7098a211eea803b0230c0f5d /bin/ax.sh
parentHandle POSIX correctness in ~/.bash_profile (diff)
downloaddotfiles-c8ab406749124d2e762ad5cf53963070113afd0f.tar.gz
dotfiles-c8ab406749124d2e762ad5cf53963070113afd0f.zip
Apply runtime shebanging to POSIX shell
Diffstat (limited to 'bin/ax.sh')
-rw-r--r--bin/ax.sh27
1 files changed, 27 insertions, 0 deletions
diff --git a/bin/ax.sh b/bin/ax.sh
new file mode 100644
index 00000000..6ce1e9ea
--- /dev/null
+++ b/bin/ax.sh
@@ -0,0 +1,27 @@
+# Evaluate an Awk expression given on the command line with an optional format
+
+# Count arguments
+case $# in
+
+ # If one argument, we assume format is %s
+ 1) form=%s expr=$1 ;;
+
+ # If two arguments, first is format, second expression
+ 2) form=$1 expr=$2 ;;
+
+ # Any other number of arguments is wrong
+ *)
+ printf >&2 'ax: Need an expression\n'
+ exit 2
+ ;;
+esac
+
+# Form program
+prog=$(printf '
+ BEGIN {
+ printf "%s\\n", %s
+ }
+' "$form" "$expr")
+
+# Run program
+awk "$prog"