Search code examples
just

In justfile, how to set a variable with another variable?


Snippet

var_a := "hello"
var_b := "world"

var_v1 := "{{var_a}}-{{var_b}}"
var_v2 := `export exp_a={{var_a}}; echo "${exp_a}-{{var_b}}"`
var_v3 := "{{ var_a }}" + "{{ var_b }}"

@default:
  echo var_a: {{var_a}}
  echo var_b: {{var_b}}
  echo var_v1: {{var_v1}}
  echo var_v2: {{ var_v2 }}
  echo var_v3: {{ var_v3 }}

I want to concatenate two variables and assign to the value to a new variable.

I have tried the following options.

  1. String interpolation. var_v1 in snippet
  2. Shell variable expansion var_v2 in snippet
  3. Concat operator in justfile.

In all three cases, variables are NOT expanded.

# output of `just default`
var_a: hello
var_b: world
var_v1: {{var_a}}-{{var_b}}
var_v2: {{var_a}}-{{var_b}}
var_v3: {{ var_a }}{{ var_b }}

Does any body have a solution to this ?


Solution

  • just use variables without {{}} in an assignment

    var_a := "hello"
    var_b := "world"
    
    var_v1 := var_a+"-"+var_b
    var_v2 := 'export exp_a='+var_a+'; echo "${exp_a}-'+var_b+'"'
    var_v3 := var_a + var_b
    
    @default:
      echo var_a: {{var_a}}
      echo var_b: {{var_b}}
      echo var_v1: {{var_v1}}
      echo var_v3: {{var_v3}}
      #echo var_v2: {{var_v2}} #what are you trying to do?