Recently Written · git

tmpl

Insanely simple templates

git clone https://github.com/equwal/tmpl

Log | Files | Refs


commit 3cb50f98dbaad4ebedc44e8a08469ab6c53b4313
Spenser Truex <truex@equwal.com>
2025-09-08 21:52:21 -0700

Split up POSIX for for sanity

 sh/for-array | 14 ++++++++++++++
 sh/for-find  | 15 ++++++---------
 2 files changed, 20 insertions(+), 9 deletions(-)
diff --git a/sh/for-array b/sh/for-array
new file mode 100644
index 0000000..fa27469
--- /dev/null
+++ b/sh/for-array
@@ -0,0 +1,14 @@
+#
+# Yes, it really is this hard to do
+# and it is broken on GNU non-POSIX non-+ support.
+save () {
+    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+    echo " "
+}
+
+old=$(save "$@")
+myarray=$(save "$@")
+set -- foo bar baz boo
+eval "set -- $myarray"
+for i ; do <++> ; done
+eval "set -- $old"
diff --git a/sh/for-find b/sh/for-find
index 61d45b8..ea93687 100644
--- a/sh/for-find
+++ b/sh/for-find
@@ -4,18 +4,15 @@ save () {
     for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
     echo " "
 }
-# eg.
-# myarray=$(save "$@")
-# set -- foo bar baz boo
-# eval "set -- $myarray"
+
 
 findarray () {
     find "$@" -exec sh -c "for i do printf %s\\\\n \"\$i\" \\
     | sed \"s/'/'\\\\\\\\''/g;1s/^/'/;\\\$s/\\\$/' \\\\\\\\/\"
     done" dummy '{}' +
 }
-# eg.
-# old=$(save "$@")
-# eval "set -- $(findarray path)"
-# for i do command "$i" ; done
-# eval "set -- $old"
+
+old=$(save "$@")
+eval "set -- $(findarray path)"
+for i do <++> ; done
+eval "set -- $old"