view bin/example/self-writing.sh @ 323:b2924a3ae4f3

fleshing
author Jeff Hammel <jhammel@mozilla.com>
date Sat, 08 Jun 2013 08:30:37 -0700
parents 19b5bf66ba4e
children ae1346f776c3
line wrap: on
line source

#!/bin/bash

# illustrate self-writing script (example)
# This one does something hard and replaces dynamic data with sed.
# Other solutions (magic markers, etc) are possible

path=`readlink -f $0`
tmp=`tempfile`
datestamp=`date`
nonce="This script regenerated at "

# sanity check
if [[ ! -w "${path}" ]]
then
    echo "You don't have write permission for script ${path}"
    exit 1
fi

# avoiding -i for safety
sed 's/\(echo \"'"${nonce}"'\).*\"/\1'"${datestamp}"'\"/' ${path} > ${tmp}

# echo last and current generation times for example
echo "This script last generated at (None)"
echo "Now: ${datestamp}"

# move tmpfile -> script location via exec