Matt
Matt

Reputation: 1032

declaring shell variable from awk

I want to set a variable in shell to true depending on if certain requirement is met. That requirement is determined by awk.

So here's what I do

$  different=false

$  awk 'if (certain requirements met) {'different=true'}' inputfile

$  if $different; then
     print "Different

However, different does not set to true.

PS my certain requirements met is definitely true.

Thank you

Upvotes: 0

Views: 147

Answers (2)

chepner
chepner

Reputation: 530833

awk cannot set variables in the shell that called it. You can use exit to set awk's exit status:

$ if awk 'if (certain requirements met) {exit 0} else { exit 1 }' inputfile; then
>  printf "different\n"
> fi

Or capture the output of awk in a variable:

$ different=$( awk 'if (certain requirements met) { print "true" } else { print "false" }' inputfile )
$ if [[ $different = true ]]; then
>  printf "different\n"
> else
>  printf "Not different"
> fi

Upvotes: 4

Jotne
Jotne

Reputation: 41436

Here is how you do it.

different=$(awk 'if (certain requirements met) {print "true"}' infile)

Upvotes: 2

Related Questions