xsl-list
[Top] [All Lists]

RE: [off-list] document(lang_*.xml)

2003-01-25 13:59:56
Mike Brown wrote:

Some shells have a 'noclobber' option that controls whether or
not '>' will overwrite an existing file or raise an error. How
you set this option depends on what shell you're using.
#!/bin/sh implies Bourne shell,

In Posix-compliant systems (most modern UNIX variants, including all
formulations of Linux I have used), it implies Korn shell.  The original
Bourne shell does not have a "noclobber" feature at all.

but on some Linux systems
they've replaced it with Bourne Again shell (bash), which was
not a good idea, in my opinion.

I have seen Linux systems where the default user shell was bash, but it was
still located in /bin/bash.  Can you give an example of a Linux where
/bin/sh is actually bash?

'man sh' or 'man bash' will
give you all the details.

Well... Err... Yeah, if you have time to read through a *novel* to find a
particular paragraph.

Here is the skinny.  If you are using *either* bash or Korn shell, the
noclobber feature is set with 'set -o noclobber' and unset with 'set +o
noclobber'.  That's right "-" sets the feature, and "+" unsets it.  Ain't
Unix grand!?  Again, the *Bourne* shell has no noclobber feature, so you are
out of luck if you are on some old system that actually still uses the
Bourne shell.  The C shell and variants use a different mechanism for
noclobber, but if "#!/bin/sh" resolves to one of these your system is
seriously broken.


Anyway...

echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' > list.xml
echo '<LangList>' >> list.xml
ls lang_*.xml | sed -e "s(_at_)\(.*xml\)@<language>\1</language>@" >> list.xml
echo '</LangList>' >> list.xml

Instead of 'ls', you might want to do '/bin/ls -1'. Many people create
personal aliases for 'ls' that change the list format. By explicitly
specifying /bin/ls, you avoid using the alias. The -1 forces the
output to be
one filename per line, in case the default on your system is multicolumn.

Or you could just avoid local environment differences in Unix commands by
not using any Unix commands at all:

    echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' >
list.xml
    echo '<LangList>' >> list.xml
    for fileName in lang_*.xml
    do
        echo '<language>'"$fileName"'</language>'
    done >> list.xml
    echo '</LangList>' >> list.xml

The only command used in this formulation is the "echo" command, which is
usually a built-in command.  But in any case, this syntax of the echo
command works the same in every shell I have ever used.  Someone *could* use
an alias or shell function to define echo to do something different, but it
would be terribly counterproductive.  Every general purpose shell script
they ever use would stop working correctly.

=======================================================
It seems to me that this thread has wandered way off-topic.  I only
responded at all because there was incomplete or incorrect information here.
I would be glad to discuss this in e-mail with anyone who wants to
participate.

-- Roger Glover
   glover_roger(_at_)yahoo(_dot_)com



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list