none
変数に格納された文字列情報をダブルクォート(")記号で囲んだ状態に変換して出力したい RRS feed

  • 質問

  • こんにちは。

    初心者質問で大変恐縮ではございますが以下の点ご回答いただけますと幸いです。

    $hensu = "abcde"

    で定義した変数$hensuを以下のコマンドで出力すると後述の結果が返ってきます。

    PS C:\20181213> Write-Output $hensu
    abcde

    出力結果をダブルクォートで囲って以下のように出力する方法はございますでしょうか。

    "abcde"

    ついでながらで大変申し訳ございませんが、

    Write-OutputコマンドレットとWrite-Hostコマンドレットの違いについても教えていただけますと幸いです。

    皆さんご多用のところ恐れ入りますが何卒ご対応のほどよろしくお願いいたします。


    • 編集済み AkrD_GTND 2019年1月10日 6:43
    2018年12月13日 0:20

回答

  • PowerShell のエスケープシーケンスは以下になっているようです。

    `t は、タブ。 `r はキャリッジリターン。 `n は改行。 `" はダブルクォーテーション

    参考サイト:https://qiita.com/opengl-8080/items/bb0f5e4f1c7ce045cc57

    ですので、"abcde" という文字列を格納するには

    $hensu = "`"abcde`""

    とするとよいようです。

    Write-OutputコマンドレットとWrite-Hostコマンドレットの違いについては詳しくないのですが、下記のサイトで分かりやすく解説されておりました。参考になりますでしょうか?

    https://blog.shibata.tech/entry/2016/01/11/151201

    • 編集済み kenjinoteMVP 2018年12月13日 0:32
    • 回答としてマーク AkrD_GTND 2018年12月14日 0:16
    2018年12月13日 0:29
  • シングルクオート文字列の場合、ダブルクオートをそのまま入力できます。

    '"' + $a + '"'

    ダブルクオート文字列の場合、変数を埋め込むことができます。

    "`"$a`""

    エスケープにせよ文字列結合にせよ多量にあると見づらいので、多用するなら関数化してもいいかもしれません。

    function Quote([String] $x) { '"' + $x + '"' }

    Write-Host (Quote $a)

    • 回答としてマーク AkrD_GTND 2018年12月14日 0:16
    2018年12月13日 1:09

すべての返信

  • PowerShell のエスケープシーケンスは以下になっているようです。

    `t は、タブ。 `r はキャリッジリターン。 `n は改行。 `" はダブルクォーテーション

    参考サイト:https://qiita.com/opengl-8080/items/bb0f5e4f1c7ce045cc57

    ですので、"abcde" という文字列を格納するには

    $hensu = "`"abcde`""

    とするとよいようです。

    Write-OutputコマンドレットとWrite-Hostコマンドレットの違いについては詳しくないのですが、下記のサイトで分かりやすく解説されておりました。参考になりますでしょうか?

    https://blog.shibata.tech/entry/2016/01/11/151201

    • 編集済み kenjinoteMVP 2018年12月13日 0:32
    • 回答としてマーク AkrD_GTND 2018年12月14日 0:16
    2018年12月13日 0:29
  • シングルクオート文字列の場合、ダブルクオートをそのまま入力できます。

    '"' + $a + '"'

    ダブルクオート文字列の場合、変数を埋め込むことができます。

    "`"$a`""

    エスケープにせよ文字列結合にせよ多量にあると見づらいので、多用するなら関数化してもいいかもしれません。

    function Quote([String] $x) { '"' + $x + '"' }

    Write-Host (Quote $a)

    • 回答としてマーク AkrD_GTND 2018年12月14日 0:16
    2018年12月13日 1:09
  • お世話になっております。

    アキラです。

    お二人の回答に投票をしたら返信ができなくなってしまったので

    本メッセージにてお礼申し上げさせていただきます。

    ご回答いただきましてありがとうございます。

    ご回答いただきました方法にて希望していた出力ができました。

    また、ご連携いただきました情報、関数活用させていただきます。

    今後ともよろしくお願いいたします。

    以上、

    よろしくお願いいたします。

    2018年12月14日 0:30