22 lines
		
	
	
		
			444 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			22 lines
		
	
	
		
			444 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #! /bin/bash
 | |
| # Run given command application and update the contents of a given file.
 | |
| # Will not change the file if its contents has not changed.
 | |
| [[ $# -gt 1 ]] || { echo "Usage: ${0##*/} FILE COMMAND" >&2; exit 1; }
 | |
| set -u
 | |
| declare -r outfile="$1"
 | |
| shift
 | |
| if [[ ! -f $outfile ]]; then
 | |
| 	$@ >$outfile
 | |
| 	exit
 | |
| fi
 | |
| 
 | |
| declare -r newout=${outfile}.new
 | |
| $@ >$newout
 | |
| rc=$?
 | |
| if cmp -s $newout $outfile; then
 | |
| 	rm $newout
 | |
| else
 | |
| 	mv -f $newout $outfile
 | |
| fi
 | |
| exit $rc
 |