Windows Vista Forums

Has anyone sucessfully read the value of the $OFS variable?
  1. #1


    Bob Landau Guest

    Has anyone sucessfully read the value of the $OFS variable?

    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

      My System SpecsSystem Spec

  2. #2


    Tao Ma Guest

    Re: Has anyone sucessfully read the value of the $OFS variable?

    You can use Test-Path to check if the ofs exist, if so, the PowerShell use
    it as delimiter to concatenate the array element.
    If it doesn't exist, PowerShell use blank space instead.

    You can use Remove-Item variablefs to investigate above hehavior.

    Best wishes.

    Tao Ma

    "Bob Landau" <BobLandau@xxxxxx> дÈëÓʼþ
    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


      My System SpecsSystem Spec

  3. #3


    Bruce Payette [MSFT] Guest

    Re: Has anyone sucessfully read the value of the $OFS variable?

    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


      My System SpecsSystem Spec

Has anyone sucessfully read the value of the $OFS variable? problems?

Similar Threads
Thread Thread Starter Forum Replies Last Post
read strings to variable James VB Script 1 05 Sep 2009
How to read a user input value from command line and store it in a variable? Tony Bansten VB Script 5 25 Mar 2009
Re: How to display a variable value in a dialog box and how to read user input? Richard Mueller [MVP] VB Script 0 20 Jun 2008
Read-Host issue, won't store to variable when using multiple read-host lines bryan.rutkowski@gmail.com PowerShell 7 09 Feb 2007