Opening the file descriptors for reading and writing

From Linux Shell Scripting Tutorial - A Beginner's handbook
Revision as of 22:32, 19 September 2009 by Admin (talk | contribs) (Created page with 'Bash supports the following syntax to open file for both reading and writing on file descriptor: <pre>exec fd<>fileName</pre> * File descriptor 0 is used if fd is not specified. …')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Bash supports the following syntax to open file for both reading and writing on file descriptor:

exec fd<>fileName
  • File descriptor 0 is used if fd is not specified.
  • If the file does not exist, it is created.
  • This syntax is useful to update file.

Example

Create a shell script called fdreadwrite.sh

#!/bin/bash
FILENAME="/tmp/out.txt"
# Opening file descriptors # 3 for reading and writing
# i.e. /tmp/out.txt
exec 3<>$FILENAME

# Write to file
echo "Today is $(date)" >&3
echo "Fear is the path to the dark side. Fear leads to anger. " >&3
echo "Anger leads to hate. Hate leads to suffering." >&3
echo "--- Zoda" >&3

# Read the same file using while loop
while IFS= read -u 3 -r line
do
  echo $line
done

# close fd # 3
exec 3>&-