view bin/example/self-writing.sh @ 694:ebca6d85213a

File "/usr/lib/python3/dist-packages/IPython/config/__init__.py", line 16, in <module> from .application import * File "/usr/lib/python3/dist-packages/IPython/config/application.py", line 31, in <module> from IPython.config.configurable import SingletonConfigurable File "/usr/lib/python3/dist-packages/IPython/config/configurable.py", line 33, in <module> from IPython.utils.text import indent, wrap_paragraphs File "/usr/lib/python3/dist-packages/IPython/utils/text.py", line 28, in <module> from IPython.external.path import path File "/usr/lib/python3/dist-packages/IPython/external/path/__init__.py", line 2, in <module> from path import * File "/home/jhammel/python/path.py", line 25 print root(path) ^
author Jeff Hammel <k0scist@gmail.com>
date Wed, 09 Jul 2014 16:26:49 -0700
parents aae9b0776e60
children
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`
mode=`stat --format '%a' ${path}`
tmp=`tempfile --mode ${mode}`
datestamp=`date`
nonce="This script last generated 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}
if [[ ! -e "${tmp}" ]]
then
    echo "Temporary file creation not successful"
    exit 1
fi

# echo last and current generation times for example
echo "This script last generated at Sat Jun  8 08:52:35 PDT 2013"
echo "Now: ${datestamp}"

# move tmpfile -> script location via exec
exec mv ${tmp} ${path}