Re: Comparing strings

Grant Taylor <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.