PowerShell -Part 4at TECHPowerShell -Part 4 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト705:デフォルトの名無しさん 20/11/08 02:53:16.74 mlfH60EQ.net スコープの話だと思うよ 関数の内側で変数を書き換えてもローカルスコープ内の変数の更新にしかならないので、関数から戻ったら値は書き換わってない 関数を次のように書き換えて明示的にスクリプトスコープの変数を更新してやればいい function get_stop_code { $script:hoge=(Get-Content stop_code.txt) } PSのスコープって特殊で悩ましい 特にループの初回、ほかの言語みたいに未宣言の変数だぞとエラーになってくれればまだいいんだけど、変数が作られて親からも見えちゃうから混乱する 706:デフォルトの名無しさん 20/11/08 08:09:56.71 0BM2Z5Uf.net おれも一瞬ではなく数分、>>703の問題がわからなかった とりあえず頭にSet-StrictMode -Version Latestを付けとけばエラーにはなる 707:デフォルトの名無しさん 20/11/08 10:11:33.41 vf10kFcr.net >>705 ありがとうございます。 >関数の内側で変数を書き換えてもローカルスコープ内の変数の更新にしかならないので、関数から戻ったら値は書き換わってない というのは、 >>703だと、 同じシェル内にある$hogeであっても、 ①get_stop_code関数内の$hoge ②while ($true)内にある$hoge の2種類があり、 while ($true)内で、get_stop_code関数を実行しても、 ①の$hogeしか書き換わらないから、求める結果が得られない。 って事でしょうか。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch