Mercurial > hg > dml-open-cliopatria
comparison cpack/dml/scripts/compression/bufs @ 0:718306e29690 tip
commiting public release
| author | Daniel Wolff |
|---|---|
| date | Tue, 09 Feb 2016 21:05:06 +0100 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:718306e29690 |
|---|---|
| 1 #!/bin/sh | |
| 2 if [ $# -lt 3 ]; then | |
| 3 echo 'bufs <n:int> <command> <arg1> <arg2> ...' | |
| 4 echo | |
| 5 echo 'Apply command to arguments but buffering the nth argument' | |
| 6 echo 'of command (ie (n+1)th argument of strm) into a temporary file.' | |
| 7 echo 'This means that the nth argument can safely be replaced with' | |
| 8 echo 'a bash process redirection.' | |
| 9 exit 1 | |
| 10 fi | |
| 11 set -o nounset | |
| 12 set -e | |
| 13 | |
| 14 function str1 { | |
| 15 cmd="$1" | |
| 16 arg1="$2" | |
| 17 tmp=`mktemp -t strXXX` | |
| 18 # echo created $tmp 1>&2 | |
| 19 trap "rm -f $tmp; exit" INT KILL EXIT | |
| 20 shift 2 | |
| 21 (cat "$arg1" > $tmp) && $cmd $tmp "$@" | |
| 22 } | |
| 23 | |
| 24 function str { | |
| 25 pos=$1 | |
| 26 shift 1 | |
| 27 if [ $pos -eq 1 ]; then | |
| 28 str1 "$@" | |
| 29 else | |
| 30 cmd="$1 $2" | |
| 31 shift 2 | |
| 32 str $(($pos-1)) "$cmd" "$@" | |
| 33 fi | |
| 34 } | |
| 35 str "$@" |
