Voelker, Bernhard wrote:
> Jim Meyering wrote:
>> James Youngman wrote:
>>> ( IFS=' '; printf '%s\n' "$*"; )
>>>
>>> is perhaps slightly more reproducible.
>>
>> Good suggestion. Setting IFS does seem prudent.
>> However, I'm inclined to use a subshell only if necessary:
>>
>> warn_ ()
>> {
>> case $IFS in
>> ' '*) printf '%s\n' "$*" 1>&$stderr_fileno_ ;;
>> *) ( IFS=' '; printf '%s\n' "$*" 1>&$stderr_fileno_ ) ;;
>> esac
>> }
>
> is a subshell really needed to change IFS?
>
> warn_ ()
> {
> IFS=' ' printf '%s\n' "$*" 1>&$stderr_fileno_
> }
>
> or don't all shells understand this?
That would be better -- if it worked.
IFS is a shell variable, not an environment variable.
Try this on the command line:
stderr_fileno_=2
warn_ () { IFS=' ' printf '%s\n' "$*" 1>&$stderr_fileno_; }
$ (IFS=:; warn_ a b)
a:b