[Thread Prev][Thread Next][Index]

Re: [ferret_users] How to pass the value from a ferret script to a c shell file ?



Hi,

| I do not know how to save the value
| of a variable in ferret script and pass that value to another
| variable in my c shell file.

Does anybody know how to suppress messages from Ferret other than
using the -script flag?  Without the "-script" flag, we have
startup messages like

	NOAA/PMEL TMAP
 	FERRET v6.61  
        . . .

and "yes?" prompts.

For now, I use the "-script" flag, which complicates my solution
shown below.

In principle, you can "print" the value using the SAY
command of Ferret and capture it from your shell script.
It's the standard way of communication between processes
within a shell script.

I'm attaching a small demonstration. I use the Bourne Shell
because I don't know the C Shell well enough.

The basic idea is

  ferret <<STOP  | command_to_process_ferrets_output
  let a = 3.14
  say `a`
  quit
  STOP

where you read lines from Ferret in
command_to_process_ferrets_output .

But, if you do this, you end up seeing extra information printed
out by Ferret as I mentioned above.  So, in my demonstration,
I use the "-script" flag and a named pipe for the script.
Since it's a demonstration, I omitted error handling.

As an aside, a named pipe is necessary when your lines are long.
As far as I know, the maximum length of a line is a lot smaller
when reading the standard input than when reading a script file.

Regards,
Ryo
#/bin/sh
# This is just a demonstration or a template.

process_ferrets_output()
{
    while read line; do
	echo ferret said "$line"
    done
}

mypipe=tmp-pipe.jnl

mkfifo $mypipe
sleep 999999999 > $mypipe &  ## keeps the pipe from closing.
sleep_pid=$!

ferret -noverify -script $mypipe | process_ferrets_output &

cat <<'EOF' > $mypipe
let a = 3.14
let b = "hello"
say `a`
say `b`
quit
EOF

kill $sleep_pid
rm $mypipe

wait

[Thread Prev][Thread Next][Index]
Contact Us
Dept of Commerce / NOAA / OAR / PMEL / Ferret

Privacy Policy | Disclaimer | Accessibility Statement