On Thu, Dec 29, 2016 at 09:43:54PM +0700, PePa wrote: > if (((q==1)) || [[ $r ]]) && grep -q $s $file > then > echo "$s is in $file, and either q is 1 or r is not empty" > fi > > I guess this works, but it spawns a subshell. Is there a better way?
What you're literally asking for should be done with command grouping instead of a subshell: if { ((q==1)) || [[ $r ]] ; } && grep -q "$s" "$file"; then ... But my personal preference would be to rewrite it for readability: if ((q==1)) || [[ $r ]]; then if grep -q "$s" "$file"; then ... fi fi