BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

PowerShellの変数

コンピュータサイエンス(およびカジュアルコンピューティング)では、変数は、後で使用するために任意の情報を保持するメモリ内の場所です。つまり、データを出し入れするための一時的なストレージコンテナです。 Bashシェルでは、そのデータは単語(文字列)にすることができます 、コンピュータ用語で)または数値(整数

これまで(故意に)コンピューターで変数を使用したことはないかもしれませんが、おそらく人生の別の領域で変数を使用したことがあります。 「givemethat」や「lookatthis」などと言うときは、文法変数を使用しています(代名詞 )。 「これ」と「それ」の意味は、あなたが頭の中で描いているもの、またはあなたが何を指しているのかを聴衆が知るための指標としてあなたが指し示しているものによって異なります。数学を行うときは、おそらく変数とは呼ばないかもしれませんが、未知の値を表すために変数を使用します。

この記事では、Windows、Linux、またはMacで実行されるPowerShellの変数について説明します。オープンソースのBashシェルのユーザーは、代わりにBashシェルの変数に関する私の記事を参照する必要があります(ただし、LinuxでPowerShellを実行でき、オープンソースであるため、この記事を続けることができます)。

注: この記事の例は、オープンソースオペレーティングシステムLinuxで実行されているPowerShellセッションからのものであるため、WindowsまたはMacを使用している場合は、ファイルパスが異なります。ただし、Windowsは /を変換します \へ 自動的に、すべての例がすべてのプラットフォームで機能します。ただし、明らかな違いを置き換えることができます(たとえば、ユーザー名が seth である可能性は統計的に低いです)。 。

変数とは何ですか?

PowerShellで変数が必要かどうかは、端末で何をするかによって異なります。一部のユーザーにとって、変数はデータを管理するための不可欠な手段ですが、他のユーザーにとっては、マイナーで一時的な利便性であるか、一部のユーザーにとっては、変数が存在しない可能性があります。

最終的に、変数はツールです。それらの用途を見つけたときにそれらを使用することも、OSによって管理されていることを知って安心してそのままにしておくこともできます。ただし、知識は力であり、Bashで変数がどのように機能するかを理解することで、あらゆる種類の予期しない創造的な問題解決につながる可能性があります。

変数を設定する

変数を作成するために特別な権限は必要ありません。それらは自由に作成でき、自由に使用でき、通常は無害です。 PowerShellでは、変数名を定義し、その値を Set-Variable で設定して、変数を作成します。 指図。以下の例では、 FOOという新しい変数を作成します その値を文字列$HOME / Documentsに設定します :

PS> Set-Variable -Name FOO -Value "$HOME/Documents"

成功は不気味に沈黙しているので、変数が設定されたことに自信がないかもしれません。 Get-Variable を使用すると、結果を自分で確認できます。 ( gv 略して)コマンド。変数が定義したとおりに正確に読み取られるようにするために、変数を引用符で囲むこともできます。そうすることで、変数に表示される可能性のある特殊文字が保持されます。この例では、それは当てはまりませんが、それでも形成するのは良い習慣です:

PS> Get-Variable "FOO" -valueOnly
/home/seth/Documents

FOOの内容に注意してください 正確に設定したものではありません。変数に設定したリテラル文字列は$HOME / Documents でした 、しかし現在は / home / seth / Documentsとして表示されています 。これは、変数をネストできるために発生しました。 $ HOME 変数は、 C:\ Users にあるかどうかに関係なく、現在のユーザーのホームディレクトリを指します Windowsの場合、 / home Linuxの場合、または/ユーザー Macの場合。 $ HOME以降 FOOに埋め込まれました 、その変数は展開されます リコールされたとき。このようにデフォルト変数を使用すると、プラットフォーム間で動作するポータブルスクリプトを作成するのに役立ちます。

変数は通常、あるシステムから別のシステムに情報を伝達することを目的としています。この簡単な例では、変数はあまり役に立ちませんが、それでも情報を伝達できます。たとえば、 FOOのコンテンツが 変数はファイルパスであり、 FOOを使用できます その値が参照するディレクトリへのショートカットとして。

変数FOOを参照するには のコンテンツ 変数自体ではなく、変数の前にドル記号( $ )を付けます ):

PS> pwd
/home/seth
PS> cd "$FOO"
PS> pwd
/home/seth/Documents
変数をクリアする

Remove-Variableを使用して変数を削除できます コマンド:

PS> Remove-Variable -Name "FOO"
PS> gv "FOO"
gv : Cannot find a variable with the name 'FOO'.
[...]

実際には、変数を削除する必要は通常ありません。変数は比較的「安価」であるため、変数を作成して、不要になったときに忘れることができます。ただし、変数を読み取る可能性のある別のプロセスに不要な情報が伝達されないように、変数が空であることを確認したい場合があります。

衝突保護機能を備えた新しい変数を作成します

場合によっては、変数が自分または他のプロセスによってすでに設定されていると信じる理由があるかもしれません。オーバーライドしたくない場合は、 New-Variableを使用できます。 、これは、同じ名前の変数がすでに存在する場合に失敗するように設計されています。または、条件ステートメントを使用して、最初に変数をチェックできます。

PS> New-Variable -Name FOO -Value "example"
New-Variable : A variable with name 'FOO' already exists.

注: これらの例では、 FOO / home / seth / Documentsに設定されています 。

または、単純な ifを作成することもできます。 既存の変数をチェックするステートメント:

PS> if ( $FOO ) 
>> { gv FOO } else
>> { Set-Variable -Name "FOO" -Value "quux" }
変数に追加

変数を上書きする代わりに、既存の変数に追加できます。 PowerShellでは、変数には文字列、整数、配列など、さまざまな種類があります。基本的に複数の値を使用して変数を作成する場合は、文字で区切られた文字列と配列のどちらが必要かを判断する必要があります。どちらの方法でもかまいませんが、変数のデータを受信するアプリケーションはどちらか一方を期待する可能性があるため、ターゲットに基づいて選択してください。

文字列変数にデータを追加するには、 + =を使用します 構文:

PS> gv FOO
foo
PS> $FOO += ",bar"
PS> gv FOO
foo,bar
PS> $FOO.getType().Name
String

配列はPowerShellの特殊なタイプの変数であり、ArrayListオブジェクトが必要です。 PowerShellの.NET内部を深く掘り下げる必要があるため、この記事の範囲外です。

環境変数を使用してグローバル化する

これまでのところ、この記事で作成された変数はローカル 、つまり、作成したPowerShellセッションにのみ適用されます。他のプロセスにアクセスできる変数を作成するために、環境変数を作成できます。これについては、今後の記事で説明します。


  1. Windowsでカスタム環境変数を作成する

    デフォルトでは、Windowsは特定の環境変数を使用して、ユーザーがオペレーティングシステム内の特定のパスとディレクトリにすばやくアクセスできるようにします。これにより、Windowsの操作が簡単になります。独自のカスタム環境変数を定義して設定することで、アプリ、ディレクトリ、URLなどへの直接パスとショートカットを作成できます。 Windowsの環境変数は、パーセント(%)文字でキューに入れられます。したがって、これまで環境変数を使用したことがない場合は、スタートメニューを起動し、検索ボックスに次のコマンドのいずれかを入力してEnterキーを押すだけで開始できます。 %appda

  2. PowerShellの環境変数

    環境変数は、Linux、Mac、またはWindowsコンピューターのグローバル設定であり、コマンドの実行時にシステムシェルが使用するために保存されます。多くは、インストール時またはユーザー作成時にデフォルトで設定されます。 たとえば、ログイン時にホームディレクトリが環境変数として設定されます。PowerShellでの外観はオペレーティングシステムによって異なります。 Windowsの場合: PS C:\Users\bogus> Get-Variable HOME -valueOnly C:\Users\bogus Linuxの場合: pwsh> Get-Variable HO