[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Reading input piped to a bash script



On Mon, 18 Oct 2004 19:51:49 +0200, Olle Eriksson wrote:
> Hi
> 
> Can anyone explain how I can read input to a bash
> script through a pipe?
> 
> I want to be able to receive input both through a
pipe,
> and through 
> parameters to the script. For example:
> 
>   echo "blabla" | myscript.sh
> and
>   myscript.sh "blabla"
> 
> The script should be able to check whether or not any
> input is coming 
> through the pipe, and if not use $1. I have tried with
> cat and read but 
> they always asks the user interactively if nothing is
> piped to the 
> script.
> 
> Thanks
> Olle

You should use exec like the following simple example:

#!/bin/bash

exec 6<&0       # Link file descriptor #6 with stdin.

read a1         # read if somethign comes from a pipe

echo $a1        # print the output of the pipe.

# you can make here the validation that you need if not
then read $1
case a1
.
esac

exec 0<&6 6<&-  # restore stdin.

I hope this help

--
Sergio Basurto J.

If I have seen further it is by standing on the 
shoulders of giants. (Isaac Newton)
--
--



Reply to: