Help on passing an input variable to the voronota program (after third pipe)

Dear UNIX forum members,

I am using macbook pro 13 (2015 edition) with MAC OS Mojave and am trying to write the shell script where when it is run through terminal it asks for an input (in the code below an input variable is domains) and then that input becomes capital letter or letters which voronota program requires (so instead of 'c<domains>' it should be 'c<C,D>' or any other letter combinations when the voronota program is run at the third pipe). The code is given below :

#!/bin/bash
for i in $( ls ); do
    echo $i
    read -p "Domains: " domains
    cat $i | voronota get-balls-from-atoms-file --annotated | voronota calculate-contacts --annotated | voronota query-contacts --match-first 'c<$domains>' --match-second 'R<ALA>' | awk '{sum += $3} END {print sum}'
done

I am expecting to get 1.18715 after awk prints the value to the terminal, but in the above code I do not get any value which signals to me that when I write C,D after shell asks "Domains: " the written input is not passed to the variable domain at:

... | voronota query-contacts --match-first 'c<$domains>' --match-second 'R<ALA>' ...

I will look forward to your help.

Sincerely,
Aurimas

P.S. I tried writing "$domains" but still no success

The single quotes keep the shell from expanding th variable. Try double quotes instead. If the single quotes are needed, double quote those.

What you mean by double quote those?

--- Post updated at 03:48 PM ---

Understood. Double quotes worked :slight_smile:

--- Post updated at 03:53 PM ---

I get the first value when I do "'c<domains>'" or "c<domains>" but as the second should be 152.314, I am not getting anything for it. In general there should be 114 different values. Where might be my problem?

--- Post updated at 04:21 PM ---

Everything works. Had mistaken values.

Dear all,

How can I exit the script and return to terminal if domains is not equal to .pdb file, which i specifies . How could I make domains to be equal to "e" or any other string, number, etc. that would mean for the script to exit it and return to terminal?

The upgraded script:

#!/bin/bash
for i in $( ls ); do
    echo $i
    read -p "Domains: " domains
    cat $i | voronota get-balls-from-atoms-file --annotated | voronota calculate-contacts --annotated | voronota query-contacts --match-first "'c<$domains>'" --match-second 'R<ALA>' | awk '{sum += $3} END {print sum}'
done

I will look forward to your replies.

Sincerely,
Aurimas

--- Post updated at 07:26 PM ---

Solved. No need for help.