notes/scripts/overwrite
2022-06-09 12:59:03 -07:00

28 lines
668 B
Bash
Executable file

#!/bin/sh
# overwrite: copy standard input to output after EOF
# final version
opath=$PATH
PATH=/bin:/usr/bin
case $# in
0|1) echo 'Usage: overwrite file cmd [args]' 1>&2; exit 2
esac
file=$1; shift # recall that shift moves all arguments one position to the left
new=/tmp/overwr1.$$; old=/tmp/overwr2.$$
trap 'rm -f $new $old; exit 1' 1 2 15 # clean up files
if PATH=$opath "$@" >$new
then
cp $file $old # save original file
trap '' 1 2 15 # we are committed; ignore signals
cp $new $file
else
echo "overwrite: $1 failed, $file unchnaged" 1>$2
exit 1
fi
rm -f $new $old
# USAGE: ow.sh notice sed 's/UNIX/UNIX(TM)/g' notice