pipe in command


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting pipe in command
# 1  
Old 03-16-2012
pipe in command

Hello,

I try to concatenate a command to execute. Sadly it throws an error.

Code:
#!/bin/bash
cd /
cmd="find -name *.txt | awk '{ printf "FILE: "$1; system("less "$1);}' | egrep 'FILE:|$1'"
echo "1."
$($cmd)
echo "2."
$("$cmd")
echo "3."
`$cmd`
echo "4."
`"$cmd"`

1.&3. 'find: paths must precede expression: |'
2.&4. 'command not found'

nothing of this works right now. I need some help please...

EDIT: I've found a solution using 'eval'. Why do I need to execute another command to use piping in shell script?

Last edited by daWonderer; 03-16-2012 at 08:57 AM..
# 2  
Old 03-16-2012
Quote:
I've found a solution using 'eval'. Why do I need to execute another command to use piping in shell script?
You don't. It is not needed or desirable to put the command into an Environment Variable (like $cmd in your script).
Your whole script should be just:

Code:
#!/bin/bash
cd /
find . -type f -name *.txt | awk '{ printf "FILE: "$1; system("less "$1);}' | egrep 'FILE:|$1'

Note that the first parameter in "find" should be the name of a directory or "." (current directory) and in your case you should confine the search to files (-type f).
There are probable bugs in the command line. The "egrep" in particular.
Not clear what the script is meant to do but searching down from root is not usually a good idea because you will find directories and files which you cannot read.

Last edited by methyl; 03-16-2012 at 12:48 PM..
This User Gave Thanks to methyl For This Post:
# 3  
Old 03-16-2012
Quote:
Originally Posted by methyl
You don't. It is not needed or desirable to put the command into an Environment Variable

Note that the first parameter in "find" should be the name of a directory or "." (current directory) and in your case you should confine the search to files (-type f).

Not clear what the script is meant to do but searching down from root is not usually a good idea because you will find directories and files which you cannot read.
I started programming with C and was searching for defined functions in header files (*.h) on this system here.
I also now got another help related using parameter '-exec grep -i word' with 'find' to search for content in files.
This User Gave Thanks to daWonderer For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Would pipe work better with this command

Hi again, have a script that I would like run, but before I can run it I need to strip out the windows \r end of lines. I have put the command into a text file and set the command to run every 10 seconds the coomand I use to do this is while sleep 10; do... (15 Replies)
Discussion started by: Paul Walker
15 Replies

2. Shell Programming and Scripting

Pipe command to script

Hello to all, Having a ruby script that works when an argument is given in command line in this way: ruby script.rb input_to_ruby To accept arguments as input, inside the ruby script has File.open(ARGV) input_to_ruby is generated by another command, so I need to create first input_to_ruby... (6 Replies)
Discussion started by: Ophiuchus
6 Replies

3. Shell Programming and Scripting

Single command pipe

Single command to ls all the files inside a particular directory hierachy and output this to a file and open this in a vim file so that i can use gf command in vim to browse through all the files inside this hierachy. eg : dir1/dir2 and dir1/dir3 dir2 and dir3 contain the files i need... (7 Replies)
Discussion started by: dll_fpga
7 Replies

4. UNIX and Linux Applications

Tee with pipe command.

cat work.txt M|324324|32424|3431 M|324324|32424|3431 N|324324|32426|3432 N|324324|32424|3434 M|324324|32424|3435 cat work.txt | tee $( grep '^M' > m.txt ) | $( grep '^N' > n.txt ) cehpny00:/home01/sr38632 $ cat m.txt M|324324|32424|3431 M|324324|32424|3431 M|324324|32424|3435 ... (2 Replies)
Discussion started by: rsampathy
2 Replies

5. Shell Programming and Scripting

pipe grep command

Hi all, Can someone help me with the following problem. I am executing the following command: (search for occurences of 'error' in files that match cl-*.log expression) > grep -cw -i --max-count=1 'error' cl-*.log this command outputs: cl-apache.log:1 cl-apache_error.log:1... (3 Replies)
Discussion started by: epro66
3 Replies

6. UNIX for Advanced & Expert Users

unix command pipe

I am pretty new to UNIX. My client has a requirement where in a directory we have some files with somewhat similar name like test_XX.txt, test_XY.txt, test_XZ.txt, test_ZZ.txt, test_ZY.txt, test_ZX.txt, test_YY.txt......Out of these files few files have 0 bytes. Is there a way where we can go... (7 Replies)
Discussion started by: RubinPat
7 Replies

7. UNIX for Dummies Questions & Answers

Pipe in command string

Hi, Can't you have a pipe in a command string ? If I try the following I get errors. Why ? > cmd="ls -lrt | grep xyz" > $cmd |: No such file or directory grep: No such file or directory xyx: No such file or directory Thanks in advance Hench (3 Replies)
Discussion started by: hench
3 Replies

8. UNIX for Dummies Questions & Answers

How can I use pipe command ?

Hi My friends I have used this command to find files are modified within the past 24 hours and then many files are shown but I want transfer all these files to special directory by using pipe . can any one tell me what is the next step ? (11 Replies)
Discussion started by: bintaleb
11 Replies

9. UNIX for Dummies Questions & Answers

pipe command

current dir : /home/sales ls -l abc.txt 17th aug bcd .txt 16t oct ------- ------ Total files : 100 if i want to move only those files dated 17 aug into another sub directory /home/sales/texas how do i pipe the result of 'ls' command to a 'mv' command (1 Reply)
Discussion started by: zomboo
1 Replies

10. UNIX for Advanced & Expert Users

How to pipe command

Hi All, I want to create a command that executes a text editor with the most recent file in the current current directory. So a good start to achieve this is : ls -lrt | cut -c55- | tail -1 which provides the name of the most recent file in a directory The problem is to pipe the... (4 Replies)
Discussion started by: anonymous.nico
4 Replies
Login or Register to Ask a Question