move-if-change 384 Bytes
Newer Older
Jason Merrill committed
1
#!/bin/sh
2 3
# Like mv $1 $2, but if the files are the same, just delete $1.
# Status is zero if successful, nonzero otherwise.
Jason Merrill committed
4

5
usage="$0: usage: $0 SOURCE DEST"
Jason Merrill committed
6

7 8 9 10 11 12 13 14 15 16 17 18 19
case $# in
2) ;;
*) echo "$usage" >&2; exit 1;;
esac

for arg in "$1" "$2"; do
  case $arg in
   -*) echo "$usage" >&2; exit 1;;
  esac
done

if test -r "$2" && cmp -s "$1" "$2"; then
  rm -f "$1"
Jason Merrill committed
20
else
21
  mv -f "$1" "$2"
Jason Merrill committed
22
fi