Re: A sh -c '${name} and $name' are treated inconsistently within a .service unit

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



27.08.2020 19:11, u34@xxxxxxx пишет:
> Consider 
> 
> [Unit]
> Description=Is it looking for ${} construct in the wrong place?
> [Service]
> Type=oneshot
> ExecStart=/bin/bash -c 'set -x; declare -r str="1 2"; echo ${str}; echo $str; exit 0;'
> 
> When ran, the journal has:
> 
> bash[14190]: + declare -r 'str=1 2'
> bash[14190]: + echo
> bash[14190]: + echo 1 2
> bash[14190]: 1 2
> bash[14190]: + exit 0
> 
> Note the top bash[14190]: + echo line. It has no arguments. Since the other echo line
> has its 1 2 arguments, I find this behaviour inconsistent. And surprising. As such, I
> think this is a bug.
> It could be that the ${NAME} construct is looked for in the environment. But then, why 
> $NAME works in the script, but not ${NAME}?
> 

As documented $NAME is recognized only when used as separate word. The
string in quotes is single word; so ${str} inside it is recognized as
environment substitution and replaced by empty string but $str inside
the same word is left as is and later processed by shell.

> In addition, for the top bash[14190]: + echo line, isn't there a missing empty, just
> [bash[14190]:, line?
> 
> Same results were obtained with systemd 241-7 and 246.2.
> 
> u34.
> _______________________________________________
> systemd-devel mailing list
> systemd-devel@xxxxxxxxxxxxxxxxxxxxx
> https://lists.freedesktop.org/mailman/listinfo/systemd-devel
> 

_______________________________________________
systemd-devel mailing list
systemd-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/systemd-devel




[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux