ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Windows PowerShellコミュの皆さんは、変数名の書き方ってどうされてますか?

  • mixiチェック
  • このエントリーをはてなブックマークに追加
PowerShellの勉強中でして、変数名の書き方って皆さんは、どうされていますか。ご意見を頂戴したいなと思った次第です。
1.変数宣言
$a = 1
または
${a} = 1

2.文字列リテラル中の変数
"変数`$aの値は、$a です"
または
"変数`$aの値は、${a} です"

PowerShellの文法を勉強していて、IEEE 1003.2の変数定義では「${変数名}」と記述されていたので試したら使えました。

私の好みは、変数宣言では「{}」を省いて、リテラルでは「{}」を記述するという方法ですね。理由としては、リテラルでは、変数を明確にしたいからです。

皆さんのご意見は、どうですか。

コメント(5)

私は${a}の形式が可能であることを知りませんでした。(^^;

変数の書き方ですが、kazaさんの方法が確実で良いですね。
文字列として変数展開される場合、通常の$aの書き方ですと、
変数名の区切りが不明確なために、ランタイムに誤認識される場合がありますから・・。

ちなみに、私の場合、${a}の書き方を知らなかったので、
$($a)
と書いていました。(^^;


$a = 1

▼NGパターン
"0$a2" → 0
▼OKパターン
"0${a}2" → 012
"0$($a)2" → 012
あ、そうなんですね。

NGパターンで示されているように、未定義の変数を展開するときって、nullになるだけで、エラーにならないんですよね。PSって。

ありがとうございます。
{}で変数名の記述を試すと理解できますが
{}を書くことで、スペースを変数名に挿入することもできます。よっぽどじゃないと、スペースを変数名に使おうとは思いませんが。
デフォルトのトークン(変数名などの区切りを識別する文字)がスペースなんですが、{}で書くことでトークンがスペースから{}に変わるためです。
ほんとだ。^^;

試してみたら、
確かに、変数名にスペースを含めることができました。

====================
${a b} = "Hello"
ls variable:
====================

使いどころですが、
文字列型の式をInvoke-Expressionで実行する時に、
「保険」のために利用できそうです。

具体的には、変数名をユーザに入力または定義可能にする場合です。

■OKパターン
#変数名にスペースを含まない:OK
$z = "abc"
$command = '$' + $z + '="zzz"'
Invoke-Expression $command

■NGパターン
#変数名にスペースを含む:エラー
$z = "1 2"
$command = '$' + $z + '="zzz"'
Invoke-Expression $command

■OKパターン
#変数名にスペースを含む:OK
$z = "1 2"
$command = '${' + $z + '}="zzz"'
Invoke-Expression $command


#ちょっと例が分かりづらいかも。f(^^;
そうですねー。
変数名を入力させる場合には、{}表記を使えば変数名にトークンが使われているかをチェックしないで出来ますね。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Windows PowerShell 更新情報

Windows PowerShellのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。