#!/bin/sh cd $(dirname "$0") TMP=$(mktemp -d) ||Die 1 echo >&2 " tmp $TMP" Die() { e=$? trap - EXIT rm -rf $TMP exit ${1:-$e} }; trap Die HUP EXIT #INT pause() {( echo >&2 -n "Continue? ..." read -sn1 REPLY echo >&2 )} txt=$(cat <<%EOF ABC ... ... ..; ... ... ..; DEF 123 dgjkasdgdsa jglksadgas asldkfjsaldkfjas asdljkgjsad dgjkasdgdsa jglksadgas asldkfjsaldkfjas asdljkgjsad dgjkasdgdsa jglksadgas asldkfjsaldkfjas asdljkgjsad asdfjlasdg dgjlk %EOF ) cc -o $TMP/exe spine.c cd $TMP ||Die 1 cat <<%EOF |sh set -v ./exe search ... ;rmdir search ./exe search aA... ;rmdir search ./exe search a. ./exe search ;rmdir search %EOF { echo echo "cat %EOF% |./exe search 1010 414243.4445460a" echo "$txt" |./exe search 414243.4445460a 1010 ||Die printf '%s (contents)\n' search/found cat "$_" printf '%s (contents)\n' search/0000000000000000 cat "$_" echo echo "echo 'ABCD' |./exe enddot 4142." echo 'ABCD' |./exe enddot 4142. ||Die printf '%s (contents)\n' enddot/0000000000000000 cat "$_" echo echo echo "created:" find . -mindepth 1 -printf '%p\n' echo "cleanup? " }>&2 read -n1 Die