I want to get a variable from another script, as demonstrated in this question on Stack Overflow:

How to reference a file for variables in a bash script

However, the answer uses the source command which is only available in bash. I want to do this in a portable way.

I have also tried

a.sh

export VAR="foo" echo "executing a" 

b.sh

#!/bin/sh ./a.sh echo $VAR 

But of course that does not work either. How to do this?

2 Answers

First of all, be aware that var and VAR are different variables.

To answer your question the . command is not bash-specific:

# a.sh num=42 
# b.sh . ./a.sh echo $num 

The variables in "a" do not need to be exported.

3

Environment variables are only inherited from parent to child and not the other way round. In your example, b.sh calls a.sh, so a runs as a child of b. When a.sh exports var, it won't be seen by b.sh. Amend the logic so that the parent process exports the variable, e.g.

a.sh:

echo In a.sh... VAR="test" export VAR ./b.sh 

b.sh:

echo In b.sh... echo $VAR 
1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy