Pipe 2 bash loops together


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Pipe 2 bash loops together
# 1  
Old 10-09-2015
Pipe 2 bash loops together

What is the proper way to run two bash loops in the same command? The two below loops run separately, the problem is when I pipe them I get an error that the file used for the second loop does not exist. I am not sure how to wait for the first loop to complete and then start the second. Thank you Smilie.

Code:
for f in /home/cmccabe/Desktop/panels/*.txt ; do
     bname=`basename $f`
     pref=${bname%%.txt}
     awk '
     FNR==NR{d[$0]; next;}          
    {                              
        for(k in d){               
            pat="(^|;)"k":";       
            if($2 ~ pat){
                print;             
                break;
            }
        }
    }' $f /home/cmccabe/Desktop/NGS/pool_I_090215/IonXpress_008_150902_4column.bed > /home/cmccabe/Desktop/panels/${pref}_loop_genes_IonXpress_008_150902.bed
done |  
for f in /home/cmccabe/Desktop/panels/*.bed ; do
     bname=`basename $f`
     pref=${bname%%.bed}
     awk '{k=$1 OFS $2;
     s[k]+=$4; c[k]++}
     END{for(i in s)
     print i, s[i]/c[i], c[i] " bases" }' $f > /home/cmccabe/Desktop/panels/${pref}_loop_genes_average_IonXpress_008_150902.bed
done 


Last edited by cmccabe; 10-09-2015 at 11:35 AM.. Reason: fixed format
# 2  
Old 10-09-2015
Why pipe? What exactly do you think you pipe to the second loop?
# 3  
Old 10-09-2015
I am trying to take the output file produced in the first bash loop as the input for the second bash loop. Instead of running the two loops as separate commands (run the first loop and have the output created), then run a new loop in terminal using that output as the input. Thank you Smilie.
# 4  
Old 10-09-2015
As far as I can see, the only output produced in loop 1 is from the awk script which is redirectred to that .bed file. Nothing to pipe...
And, in loop 2, nothing is read from stdin - no pipe used...
# 5  
Old 10-09-2015
You are correct, I guess I am just not sure if what I am trying to do is possible and if so, the best way to do so. Thank you Smilie.
# 6  
Old 10-09-2015
Try just dropping the pipe symbol.
This User Gave Thanks to RudiC For This Post:
# 7  
Old 10-09-2015
That worked... I guess I just am confused about how to use |. I will do more reading on it and thank you very much Smilie.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Correlation Between 3 Different Loops using Bash

I have 3 loops that I use to determine the permission level of AWS user accounts. This array lists the AWS policy ARN (Amazon Resource Name): for ((policy_index=0;policy_index<${#aws_managed_policies};++policy_index)); do aws_policy_arn="${aws_managed_policies}" ... (1 Reply)
Discussion started by: bluethundr
1 Replies

2. Shell Programming and Scripting

Bash: How to use read with conditions & loops

Hello, Below I try to control that the input is good an IP : #!/bin/bash cp /home/scripts/choice_interfaces.txt /home/scripts/interfaces.txt chmod 644 /home/scripts/interfaces.txt echo -e "Please enter the network informations into the /etc/network/interfaces file, complete them below... (9 Replies)
Discussion started by: Arnaudh78
9 Replies

3. Shell Programming and Scripting

bash loops

hello i'm writing a script and I want to use a for loop inside a while loop as following: while read line; do echo $line for i in $vrm; do echo $i done done < './contacts' when i use just the while loop it prints the lines from file ./contacts just... (13 Replies)
Discussion started by: vlm
13 Replies

4. Shell Programming and Scripting

while loops and variables under bash

Hi, This is probably going to be very simple but i came across something i can't quite explain. Here is the situation: i have a list of files, which i'd like to process one by one (get the size, make some tests, whatever) and generate some statistics using different variables. Something... (5 Replies)
Discussion started by: m69w
5 Replies

5. Homework & Coursework Questions

Bash if and loops help

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: Your shell script should continue to execute until the user selects option 4 2. Relevant commands, code,... (2 Replies)
Discussion started by: boyboy1212
2 Replies

6. UNIX for Dummies Questions & Answers

Bash loops and variable scope

Hi All, I've been researching this problem and I am pretty sure that the issue is related to the while loop and the piping. There are plenty of other threads about this issue that recommend removing the pipe and using redirection. However, I haven't been able to get it working using the ssh and... (1 Reply)
Discussion started by: 1skydive
1 Replies

7. UNIX for Dummies Questions & Answers

A copy paste problem with loops in bash

Hello All, i have a really strange copy paste problem. When I write some loops in an editor for example: for j in 1 2 3 do echo "$j" done and I want to paste it to the shell, the result in the shell is: for j in 1 2 3; do e; other commands work fine and if a copy paste... (4 Replies)
Discussion started by: creamcheese
4 Replies

8. Shell Programming and Scripting

bash scripting: using multiple 'for loops'??

Hey guys, I'm kinda a noob at scripting. I am trying to create a script that uses multiple for loops with the lsiutility to monitor disk health on a system. The script runs, but it will continually echo an infinite number of LogVolumes when there are only 2 per virtual disk on my server. It's... (2 Replies)
Discussion started by: tank126
2 Replies

9. Shell Programming and Scripting

[bash] IF is eating my loops

Hi! Could someone explain me why the below code is printing the contents of IF block 5 times instead of 0? #!/bin/bash VAR1="something" VAR2="something" for((i=0;i<10;i++)) do if(($VAR1=~$VAR2)) then echo VAR1: $VAR1 echo... (3 Replies)
Discussion started by: machinogodzilla
3 Replies

10. Shell Programming and Scripting

arrays and while loops in bash

hi guys, i have an array called ARRAY which has elements in it... i am trying to assign elements of ARRAY to master_array.. i get a =: command not found error.. i=0 while do ${master_array}=${ARRAY} ((i++)) done is there something i am missing? (4 Replies)
Discussion started by: npatwardhan
4 Replies
Login or Register to Ask a Question