I want to save a command in a variable like this:
[user@smat-jupyterhub-nb-user ~]$ TESTCMD='python script.py'
[user@smat-jupyterhub-nb-user ~]$ SCRIPT=script.py
Running $TESTCMD works fine. But I also want to pass a variable to that command:
[user@smat-jupyterhub-nb-user ~]$ TESTCMD2='python $SCRIPT'
When I run this, I get an error. The Variable does not get evaluated.
[user@smat-jupyterhub-nb-user ~]$ $TESTCMD2
python: can't open file '/jup/projects/$SCRIPT': [Errno 2] No such file or directory
How can I make this variable being evaluated after being stored in a variable itself?
>Solution :
That’s because you used ' quotes, instead of " preventing variable substitution.
$ FOO=echo
$ BAR=bar
$ XXX='${FOO} ${BAR}'
$ $XXX
${FOO}: command not found
$ XXX="${FOO} ${BAR}"
$ $XXX
bar
In fact the last one should be rather
$ XXX="${FOO} "${BAR}""
with ${BAR} additionally quoted.