Tags: beginner, file, followsopen, handling, ksh, linux, lock, perl, programming, regarding, script, scripting, shell, unix, write, writefile

How to open, lock, write and close a file in ksh

On Programmer » Unix & Linux

5,134 words with 3 Comments; publish: Wed, 07 May 2008 04:03:00 GMT; (200113.28, « »)

I am a beginner in shell scripting.

I have a question regarding file handling in shell script.

There is a perl script as follows:

open (WRITEFILE, ">>/user/test.html");

flock WRITEFILE, LOCK_EX;

print (WRITEFILE "test");

...

print (WRITEFILE "<BR>");

close WRITEFILE

If I want to change this to ksh script, how can I do it?

open(WRITEFILE, '/user/test.html')

flock WRITEFILE, LOCK_EX

I am not sure of write something into file

close WRITEFILE.

Can anyone help me with this?

Thanks

All Comments

Leave a comment...

  • 3 Comments
    • On 21 Jan 2006 19:40:16 -0800, Herbert

      <kang_uni.unix-linux.questionfor.info.hotmail.com> wrote:

      > I am a beginner in shell scripting.

      > I have a question regarding file handling in shell script.

      > There is a perl script as follows:

      > open (WRITEFILE, ">>/user/test.html");

      > flock WRITEFILE, LOCK_EX;

      > print (WRITEFILE "test");

      > ...

      > print (WRITEFILE "<BR>");

      > close WRITEFILE

      > If I want to change this to ksh script, how can I do it?

      > open(WRITEFILE, '/user/test.html')

      "open" and "close" commands are usually not needed in shell scripts,

      but when they are needed, files are opened and closed with redirection

      commands like "exec >/usr/test.html" or "exec >&-"

      > flock WRITEFILE, LOCK_EX

      There is a flock command, but it is rarely included in Unix/Linux

      distributions. In shell scripts, one usually uses a lock file or

      directory, with the assumption that other scripts will test that before

      writing the file.

      until mkdir lock_dir; do sleep 1; done

      > I am not sure of write something into file

      Depending on the application:

      echo something > $WRITEFILE

      echo something >> $WRITEFILE

      or

      sed 's/oldstring/newstring/' $WRITEFILE > tempfile

      mv tempfile $WRITEFILE

      <james> abuse me. I'm so lame I sent a bug report to

      debian-devel-changes

      #1; Wed, 07 May 2008 04:04:00 GMT
    • Bill Marcum

      Jan 22, 4:25 pm show options

      Newsgroups: comp.unix.shell

      From: Bill Marcum <bmar....unix-linux.questionfor.info.iglou.com> - Find messages by this author

      Date: Sun, 22 Jan 2006 15:25:35 -0500

      Local: Sun, Jan 22 2006 4:25 pm

      Subject: Re: How to open, lock, write and close a file in ksh

      Reply | Reply to Author | Forward | Print | Individual Message | Show

      original | Report Abuse

      On 21 Jan 2006 19:40:16 -0800, Herbert

      <kang_....unix-linux.questionfor.info.hotmail.com> wrote:

      > I am a beginner in shell scripting.

      > I have a question regarding file handling in shell script.

      > There is a perl script as follows:

      > open (WRITEFILE, ">>/user/test.html");

      > flock WRITEFILE, LOCK_EX;

      > print (WRITEFILE "test");

      > ...

      > print (WRITEFILE "<BR>");

      > close WRITEFILE

      > If I want to change this to ksh script, how can I do it?

      > open(WRITEFILE, '/user/test.html')

      "open" and "close" commands are usually not needed in shell scripts,

      but when they are needed, files are opened and closed with

      redirection

      commands like "exec >/usr/test.html" or "exec >&-"

      > flock WRITEFILE, LOCK_EX

      There is a flock command, but it is rarely included in Unix/Linux

      distributions. In shell scripts, one usually uses a lock file or

      directory, with the assumption that other scripts will test that before

      writing the file.

      until mkdir lock_dir; do sleep 1; done

      > I am not sure of write something into file

      Depending on the application:

      echo something > $WRITEFILE

      echo something >> $WRITEFILE

      or

      sed 's/oldstring/newstring/' $WRITEFILE > tempfile

      mv tempfile $WRITEFILE

      Thanks for the reply but I don't understand the file lock stuff in your

      reply.

      until mkdir lock_dir; do sleep 1; done

      How do I lock '/user/test.html' file? Can you please explain it again?

      #2; Wed, 07 May 2008 04:05:00 GMT
    • 2006-01-21, 19:40(-08), Herbert:

      > I am a beginner in shell scripting.

      > I have a question regarding file handling in shell script.

      > There is a perl script as follows:

      > open (WRITEFILE, ">>/user/test.html");

      > flock WRITEFILE, LOCK_EX;

      > print (WRITEFILE "test");

      > ...

      > print (WRITEFILE "<BR>");

      > close WRITEFILE

      > If I want to change this to ksh script, how can I do it?

      > open(WRITEFILE, '/user/test.html')

      > flock WRITEFILE, LOCK_EX

      > I am not sure of write something into file

      > close WRITEFILE.

      > Can anyone help me with this?

      [...]

      You don't want to do it like that. A shell is not a programming

      language, you have to think differently, you can't translate

      word to word from another language.

      Stphane

      #3; Wed, 07 May 2008 04:06:00 GMT