Ulf Andersson A
2016-11-23 15:46:17 UTC
Hello,
I am at my wits end. I have searched the bash manual and man page as well as numerous wikis and tutorials. All to no avail. I am trying this out on a Red Hat Linux engine. From uname -a I get this
Linux themachine 2.6.32-642.6.1.el6.x86_64 #1 SMP Thu Aug 25 12:42:19 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux
Here is my little example:
--8><--------------------------------------------
#!/bin/sh
# Ape
# Banana
# Ladder
# A random comment
spunk()
{
sed '/Ape/d' |
sed '/Banana/d' |
sed '/Ladder/d'
}
cat $0 | spunk
--8><--------------------------------------------
I have figured out what the three sed commands do each by themselves, but I have still fo figure out what the pipe characters actually do here. And no, I did not forget to put any continuation characters at the end of the lines.
The above example produces this output:
--8><--------------------------------------------
#!/bin/sh
# A random comment
spunk()
{
}
cat $0 | spunk
--8><--------------------------------------------
Now if I remove the pipe characters from the script above, I get this output:
--8><--------------------------------------------
#!/bin/sh
# Banana
# Ladder
# A random comment
spunk()
{
sed '/Banana/d'
sed '/Ladder/d'
}
cat $0 | spunk# A random comment
--8><--------------------------------------------
Clearly there is some hand waving with the pipe going on, but as I said above, I have not found any kind of documentation of this behaviour. At least not any that I could understand. I might be blind, or something... :)
Could anyone explain this to me, please?
Best regards,
/Ulf Andersson A
I am at my wits end. I have searched the bash manual and man page as well as numerous wikis and tutorials. All to no avail. I am trying this out on a Red Hat Linux engine. From uname -a I get this
Linux themachine 2.6.32-642.6.1.el6.x86_64 #1 SMP Thu Aug 25 12:42:19 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux
Here is my little example:
--8><--------------------------------------------
#!/bin/sh
# Ape
# Banana
# Ladder
# A random comment
spunk()
{
sed '/Ape/d' |
sed '/Banana/d' |
sed '/Ladder/d'
}
cat $0 | spunk
--8><--------------------------------------------
I have figured out what the three sed commands do each by themselves, but I have still fo figure out what the pipe characters actually do here. And no, I did not forget to put any continuation characters at the end of the lines.
The above example produces this output:
--8><--------------------------------------------
#!/bin/sh
# A random comment
spunk()
{
}
cat $0 | spunk
--8><--------------------------------------------
Now if I remove the pipe characters from the script above, I get this output:
--8><--------------------------------------------
#!/bin/sh
# Banana
# Ladder
# A random comment
spunk()
{
sed '/Banana/d'
sed '/Ladder/d'
}
cat $0 | spunk# A random comment
--8><--------------------------------------------
Clearly there is some hand waving with the pipe going on, but as I said above, I have not found any kind of documentation of this behaviour. At least not any that I could understand. I might be blind, or something... :)
Could anyone explain this to me, please?
Best regards,
/Ulf Andersson A