Skip to contentSkip to conversation

using ${var} with env import

U-Boot Holger Brunck 2 participants 3 messages Mar 30, 2011

lore
Share & tools
lore
#0 lore raw

Hi all,
I am using env import -t to import environment variables from a textfile.

My simple textfile is:
fdt_file=${hostname}/${hostname}.dtb

I import the file with:
=> tftp 200000 scripts/my_environ.txt
=> env import -t 200000 ${filesize}

Now when I print the variable I get:
=> print fdt_file
fdt_file=${hostname}/${hostname}.dtb

hostname is defined as:
=> print hostname
hostname=mgcoge

I see that the ${hostname} for my fdt_file variable is not replaced. If I do this with setenv:
=> setenv fdt_file_2 ${hostname}/${hostname}.dtb
=> print fdt_file_2
fdt_file_2=mgcoge/mgcoge.dtb

My variable is replaced.

Is the usage of ${var} in the textfiles not possible? Or is there a way to solve this problem?

I try to use this textfile for different boards and can therfore not specify hostname in advance in the textfile.

Best regards
Holger Brunck

#1 lore raw

Dear Holger Brunck,

Quoted 10 lines · In message <[email protected]> you wrote:

I am using env import -t to import environment variables from a textfile.

My simple textfile is:
fdt_file=${hostname}/${hostname}.dtb

I import the file with:
=> tftp 200000 scripts/my_environ.txt
=> env import -t 200000 ${filesize}

Quoted 7 lines

Now when I print the variable I get:
=> print fdt_file
fdt_file=${hostname}/${hostname}.dtb

hostname is defined as:
=> print hostname
hostname=mgcoge

This is perfectly normal. "env export" and "env import" are inverse operations - they export and import the environment data directly, without any conversions (except for the formatting as text lines versus NUL-terminated strings). Neither of these functions performs any variable substitutions - these are done in the command interpreter, i. e. when you run a command in the shell.

Quoted 2 lines

Is the usage of ${var} in the textfiles not possible? Or is there a way to solve this problem?

I understand that with "usage of ${var}" you mean variable subsitution
- this is indeed not supposed to happen during an "env import".

I don't consider this a problem, though. If you want such substituion, use the defined strings in shell commands.

Actually I consider it more clever to _keep_ the ${hostname} stuff in your variable definitions, as then it is sufficient to change the "hostname" variable to take affect everywhere; if you subsitute the value hard in other variables, you would have to fix all of these (and provide code to do so).

So actually I think this is not a problem, it just points out some inefficient usage of the environment in your setup.

Quoted 2 lines

I try to use this textfile for different boards and can therfore not specify hostname in advance in the textfile.

You don't have to. It does not matter when it gets defined (as long as the variables referencing it are not needed before that).

Best regards,

Wolfgang Denk

Signature · 4 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Genitiv ins Wasser, weil's Dativ ist!
#2 lore raw

Hello,

Quoted 36 lines · Wolfgang Denk

Dear Holger Brunck,

Quoted 9 lines · In message <[email protected]> you wrote:

I am using env import -t to import environment variables from a textfile.

My simple textfile is:
fdt_file=${hostname}/${hostname}.dtb

I import the file with:
=> tftp 200000 scripts/my_environ.txt
=> env import -t 200000 ${filesize}

Quoted 7 lines

Now when I print the variable I get:
=> print fdt_file
fdt_file=${hostname}/${hostname}.dtb

hostname is defined as:
=> print hostname
hostname=mgcoge

This is perfectly normal. "env export" and "env import" are inverse operations - they export and import the environment data directly, without any conversions (except for the formatting as text lines versus NUL-terminated strings). Neither of these functions performs any variable substitutions - these are done in the command interpreter, i. e. when you run a command in the shell.

Quoted 2 lines

Is the usage of ${var} in the textfiles not possible? Or is there a way to solve this problem?

I understand that with "usage of ${var}" you mean variable subsitution
- this is indeed not supposed to happen during an "env import".

I don't consider this a problem, though. If you want such substituion, use the defined strings in shell commands.

Quoted 9 lines

Actually I consider it more clever to _keep_ the ${hostname} stuff in your variable definitions, as then it is sufficient to change the "hostname" variable to take affect everywhere; if you subsitute the value hard in other variables, you would have to fix all of these (and provide code to do so).

So actually I think this is not a problem, it just points out some inefficient usage of the environment in your setup.

yes you are right and the problem I had was at a different place.

Sorry for the noise.

Best regards
Holger Brunck