If $OFS doesn't exist and an operation requires it, then the default value
of ' ' (a single space) is used. Depending on what you're doing, the
pattern:
# define an array we'll expand in a string later...
$array = 1,2,3
# expand the array with plus signs separating it...
$s = & { $OFS='+'; "$array" } # set $OFS in a nested scope
may be the easiest solution since you don't have to save OFS - variable
scoping takes care of it for you. Also, just to be clear, $OFS can be any
string. It doesn't need to be a single character:
PS (1) > $array = 1,2,3
PS (2) > & { $OFS = '"+"'; "`"$array`"" }
"1"+"2"+"3"
(And yes - it is a bug that $OFS isn't defined by default...)
-bruce
--
Bruce Payette [MSFT]
Principal Developer, Windows PowerShell
Microsoft Corporation
This posting is provided "AS IS" with no warranties, and confers no rights.
Visit the Windows PowerShell Team blog at:
http://blogs.msdn.com/PowerShell
Visit the Windows PowerShell ScriptCenter at:
http://www.microsoft.com/technet/scr.../hubs/msh.mspx
My Book:
http://manning.com/powershell
"Bob Landau" <BobLandau@xxxxxx> wrote in message
news:B9F9BCDC-BA13-4A67-A374-9EFBF06103B4@xxxxxx
> All the code I search in books and online will do something like this
>
> $OFS = <some character>
>
> but none of them first save the orignal value
>
> The problem I'm having is the default OFS variable seems to be
> instanciated
> on the fly
>
> dir variable:OFS
>
> will return an error stating it doesn't exist nor does the following see
> it
>
> Get-Variable -Scope global -Name o*
>
> so if you by habit use Set-PSDebug -Strict in your scripts it will error
> out.
>
> According to About_Automatic_Variables all of these are set by Powershell
> while I can see some of the "read-only" type variables being created on
> the
> fly; I don't see why the OFS variable should be.
>
> I would like to keep the user default value for OFS if I need to override
> it. so that it can be restored i.e.
>
> $oldOFS = $OFS
> set-variable -name oldOFS -value $OFS
>
> I feel like I'm missing something here but I don't see what or how to
> achive
> this short of catching the error.
>
> thx
> bob