help-bash
[Top][All Lists]
Advanced

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

Re: [Help-bash] Is there a construct in bash that can replace cat?


From: Greg Wooledge
Subject: Re: [Help-bash] Is there a construct in bash that can replace cat?
Date: Tue, 20 Jan 2015 08:10:52 -0500
User-agent: Mutt/1.4.2.3i

On Mon, Jan 19, 2015 at 05:03:41PM -0600, Peng Yu wrote:
> Is there a way to do it in
> bash internally without resorting to an external program?

> function filter {
> if [ "$totext" ]
> then
>   col -b
> else
>   cat
> fi
> }
> 
> some_program | filter

You're already forking because of the pipeline, so having the child shell
execute cat isn't much of an additional slowdown.

That said, you could rewrite it something like this:

# Arguments: a command to run, plus its arguments
# Whether the command is actually filtered depends on the global variable
# totext.
filter() {
  if [ "$totext" ]; then
    "$@" | col -b
  else
    "$@"
  fi
}

filter some_program arg1 'arg 2'

Of course this has the drawback that "some_program arg1 'arg 2' ..."
cannot be a pipeline or compound command.  But that may be acceptable
in your application.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]