Re: Comparing strings

Grant Taylor <[email protected]> Wed, 14 Jul 2021 09:58:22 -0600
Newsgroups alt.comp.lang.shell.unix.bourne-bash
Organization TNet Consulting
Message-ID <[email protected]>
On 7/14/21 9:42 AM, ELCV wrote:
> A new issue. I am evaluating my script so I am using echo to display 
> the commands.
> 
> My function is as follows:
> singleVolume(){
>          # OS Volumes
>          echo "virsh suspend $ARG"
>          echo "dd if=/dev/vg0/$ARG_0 | ssh [email protected] dd of=/backup/images/$ARG_0.img"
>          echo "virsh resume $ARG"
> }
> 
> When I run my command the $ARG variable in the second line is not echoed:
> 
> virsh suspend FOO
> dd if=/dev/vg0/ | ssh [email protected] dd of=/backup/images/.img
> virsh resume LIMS2
> 
> So the variable and the _0 are being dropped. I've tested without 
> "echo" and obtained the same result.
> 
> If I create a new variable, SUFF="_0" and then use echo 
> "dd if=/dev/vg0/$ARG$SUFF | ssh [email protected] dd 
> of=/backup/images/$ARG$SUFF.img"
> 
> It works. Is this expected? It only seems an issue using functions.

I don't know if I would /expect/ it per se or not.  But I am not at all 
surprised by it.

This hints at an escaping problem to me.  Maybe.  Maybe not.

Try changing your ssh command to be:

    ssh [email protected] dd of=/backup/images/${ARG}_0.img

Avoid the abiguity of what is variable vs appended string.

Aside:  That might not be the escaping that I was referring to as 
escaping would usually be how your local shell interprets $ARG, or not, 
prior to sending it to the remote shell / sub-command.  Escaping is more 
about where the expansion should happen.  And I think your primary / 
current issue is what is the variable vs data.

> Thanks.

You're welcome.



-- 
Grant. . . .
unix || die