tech.guitarrapc.cóm

Technical updates

PowerShellでスペース区切りの連番を生成する

シェル芸に近いです。 最近はDBとかのベンチマークを取ってます。 が、Linuxで動いているのでPowerShellが使えずbashばかりです……ところがbashは馴れれずついついPowerShellで生成したりしてます (石投げないでください という訳で、今回は10ずつ1000までの連番をPowerShellで生成してみたワンライナーです。 Bashのforで嘗めるのでこういうのです。
10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 610 620 630 640 650 660 670 680 690 700 710 720 730 740 750 760 770 780 790 800 810 820 830 840 850 860 870 880 890 900 910 920 930 940 950 960 970 980 990 1000

ワンライナー

とりあえずサクッとAWK風に。
1..100 | %{[string[]]$result=$null}{$result+=(10 *$_)}{"$result"}
Aliasを外して改行するとこうです。
1..100 | ForEach-Object{
        [string[]]$result=$null
    }{
        $result+=(10 *$_)
    }{
        "$result"
}
過去にも書いていますが、配列は、""で括って展開すると一行として処理されます。
"$result"

#こうなる
# 10 20 30 40 50 60 70 80 90 100 110 ........
仮にこのように、""をつけずに処理すると、値毎に改行されて一行にまとめて表示できません。
$result

#こうなる
#10
#20
#30
#40
#50
#60
#70
#80
#90
#100
#110
#.....
Windowsでも気軽に思ったようにサクッと書ける。PowerShellの良さですね。 bashで書けという突込みは無しでおねがいしまふるる