Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using pipe in if statement is not working

Tags:

linux

bash

shell

I'm new to shell scripting and stuck with this - I tried this if clause:

if [ unrar l "$filename" | grep -P "\.(?:r\d\d|r\d\d\d|.rar)$ ];
then...

It's not working, so tried this debug output - I get no output to $grep_output:

$grep_output = unrar l "$filename" | grep -P "\.(?:r\d\d|r\d\d\d|.rar)$"

If I execute this directly on the shell it's working without any problems:

unrar l "$filename" | grep -P "\.(?:r\d\d|r\d\d\d|.rar)$

Where is my mistake? Thanks in Advance!

like image 909
Tom Avatar asked Feb 08 '23 17:02

Tom


1 Answers

Remove the square brackets; these are not part of the syntax of the if statement, but an alternative way of invoking the test command, usually in order to use a binary operator:

if unrar l "$filename" | grep -P "\.(?:r\d\d|r\d\d\d|.rar)$";
  then...
fi
like image 115
Ben Avatar answered Feb 16 '23 11:02

Ben