#!/bin/bash set -e . settings export GROUP export ABBREV export INFOHEADER find -name '*.IN[O1]' -exec perl -e ' use IO::Handle; use POSIX; my $f= shift; my $d= $f; $d =~ s/\.IN([O1])$//; my $overwrite= ($1 eq 'O'); my $g= "$d.new"; open F, "< $f" or die "$f $!"; open G, "> $g" or die "$g $!"; while () { s/\%(\w+)\%/ exists($ENV{$1}) ? $ENV{$1} : die "$1 ?" /ge; print G or die $!; } F->error and die $!; close F or die $!; close G or die $!; if ($overwrite) { rename $g, $d or die "$g $d $!"; } else { if (link $g, $d) { unlink $g or die $!; } else { die "$g $d $!" unless $!==&EEXIST; } } ' '{}' \;