I am trying to sudo a command that uses Awk, and it looks like awk works differently inside sh -c.
echo '1 2' | awk '{print $2}'
2
sh -c "echo '1 2' | awk '{print $2}'"
1 2
Why is this happening?
I am trying to sudo a command that uses Awk, and it looks like awk works differently inside sh -c.
echo '1 2' | awk '{print $2}'
2
sh -c "echo '1 2' | awk '{print $2}'"
1 2
Why is this happening?
You use double quotes, therefore $2
is evaluated. The inner single quotes don't affect this anymore.
If $2
is empty, you are basically calling awk '{print }'
. Consequently, you get the whole input line as output.
You could for example escape the $
with a backslash: \$2