On 10/9/06, Steven W. Orr <steveo@xxxxxxxxxxx> wrote:
On Monday, Oct 9th 2006 at 11:58 -0400, quoth Tony Nelson: =>At 11:46 PM +0800 10/9/06, ???? wrote: => =>>2006/10/9, Dan Track <dan.track@xxxxxxxxx>: =>>> Hi =>>> =>>> I've got a script that should check which rpms are installed on the =>>> system. Part of the script involves using file descriptors. I'm having =>>> trouble understanding these file descriptors and was hoping someone =>>> can clarify my mistake. As a simple script I wrote the following: =>>> =>>> #!/bin/bash =>>> $filename=$1 =>>> $filename1=$2 =>>> =>>> exec 9<&0 < $filename => =>>The line in the script "exec 9<&0 <$filename" means "first copy fd0 to =>>fd9, then redirect file to fd0", so in the following lines of the =>>script fd9 is always the stdin. => =>According to the Wikipedia link => => exec 9<$filename => =>seems more likely. We still don't know what the goal is. All we have is a something that the author thought should do what he wants but doesn't work. Look, exec 9< $filename will redirect $filename to stdin for the duration of the process. exec < $filename 9<&0 will do the same thing but will save the value of descriptor zero for the purpose of restoration. It's all a question of what you want to do.
Hi All, Many thanks for heads up. The script I pasted in was merely a sanity check, in order to check my understanding. I thought at the time that the data from the file "filename" will be stored in fd9 however when I ran the script it wouldn't work according to that. I'm a little bit confused it seems as though some people are saying that exec 9<&0 < $filename means that the rest of the script will be dealing with fd9, but other people are saying that I will be dealing with fd0 throughout the script. Which ones right? Thanks Dan