I'm trying to spawn some dummy processes. The /path/to is the same for each, but I can't seem to get the DAEMON name to print. The result using the code below is 2 processes called /path/to/. How can I achieve /path/to/test1D and /path/to/test2D?
declare -a DAEMONS=('test1D' 'test2D')
for i in "${DAEMONS[@]}"
do
perl -e '$0="/path/to/'$i'"; sleep infinity' &
done
This should do what you want:
By using double-quotes as surrounding quotes, you can specify the string that should be evaluated by Perl, but keep the ability to use shell variables:
Because everything starting with
$will now be seen as a shell variable, so the shell will try to parse$0. But you want it to end up as$0in Perl, so you'll need to escape the$sign. That's why you see\$0here.We leave
$iintact, so the shell will substitute it with the value ofi.So asuming the value of
iistest1D, Perl will now receive: