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
 |