[CentOS] Special characters in bash strings

Fri Jul 8 02:10:41 UTC 2022
H <agents at meddatainc.com>

On 07/07/2022 12:52 AM, Jon LaBadie wrote:
> On Wed, Jul 06, 2022 at 09:41:14PM -0400, H wrote:
>> I have run into a bash variable string problem that I think I have nailed down to the variable string containing a tilde (~). Not sure if my conclusion is correct and could use some help.
>>
>> To make a long(er) story short, an associative array variable was created:
>>
>> p[work_path]="~/projects/test/"
>>
>> and referenced in the following format in the shell script:
>>
>> "${p[work_path]}"
>
> Is there a reason you desire "delayed" evaluation of the tilde?
>
> If no, then evaluate the tilde in the above assignment by not
> quoting it.
>
> If yes, then where tilde evaluation IS wanted, you will likely
> need to do a second round of shell evaluation of the command
> line by using the keyword "eval".
>
> $ x="~/foo"
> $ y=~"/foo"         # y contains the tilde evaluated version
>
> $ echo "$x $y"
> ~/foo /home/jon/foo
>
> $ echo $x $y        # quotes don't matter here
> ~/foo /home/jon/foo
>
> $ eval echo "$x $y"
> /home/jon/foo /home/jon/foo
>
>
> Use of eval could introduce other unexpected/unwanted
> evaluations and is discouraged unless required.
>
Thank you, I read up on bash expansion of tilde and realized substituting $HOME for ~ would be the best and would avoid any other unforeseen complications.

Once I had done that the script worked.