PowerShellの場合

PerlとbashとPHPを合併したような文法を持つPowerShell。
文末にセミコロンは要らず、また文字列も.ではなく+で連結する点がPerlやPHPと異なります。
-le、-ge、-And、-Orなど英語の比較・論理・ビット演算子も特徴的です。

<#==============================
複数行のコメントは
このように
書けます。
==============================#>

# 1行コメントはこのように書けます。

# echoとWrite-Outputは同じ物。Write-Hostは少し違う(追々)
echo "Hello, World."
Write-Host "こんにちは。"

$var1 = 42
$var2 = 35
$var3 = $var1 + $var2
$var4 = $var1 - $var2

echo "結果は${var3}と${var4}"

$msg = "結果は" + $var3 + "と" + $var4
echo $msg

# C言語式の代入とインクリメント演算子もある
$var2 += 18
$var3--
$var4++
echo "${var2} ${var3} ${var4}"

# 配列 初期化時の値は 42 53 76 8
$arr1 = @($var1, $var2, $var3, $var4)

# 分岐と反復。-ge、-Andなどの演算子が特徴的。Else Ifはelseif
foreach($v in $arr1){
    if($v -ge 50){
        echo "${v}は50以上です。"
    } elseif($v -ge 40 -And $v -lt 50){
        echo "${v}は40以上50未満です。"
    } else {
        echo "${v}は50未満です。"
    }
}

# 普通のfor文もある
$var5 = 1
for($i=0; $i -lt $arr1.Length; $i++){
    $var5 *= $arr1[$i]
}

# 整形出力。フォーマットはExcelに似ている
echo($var5.ToString("#,0.00"))
# 次の方法も可能。複数の値があるときは後ろに,で区切って並べる
# 0が0番目の引数を、15が15文字幅(正なら右詰め、負なら左詰め)、
# ,がカンマ区切り、00が小数点以下2桁まで表示を指示する
echo("計算結果:[{0,15:#,0.00}]" -f $var5)

$str1 = "Hello,Power,Shell,World"
echo("文字列の長さは" + $str1.Length) # 括弧は必要。ないと1行ずつ分かれて表示される

# 大文字に変換
echo $str1.toUpper()
# 配列を分割
$arr2 = $str1 -split ","
# 配列を表示
echo $arr2

foreach($v in $arr2){
    if($v -cmatch "^.[opqr]"){ # 2文字目がopqrのいずれか
        echo "${v}はマッチします。"
    } else {
        echo "${v}はマッチしません。"
    }
}

# 現在時刻の取得
$dstr1 = Get-Date -format "yyyy/MM/dd HH:mm:ss"

# 指定した年月日の値を取得。次の両方の方法が可能です。
##$tm = Get-Date -year 2020 -month 4 -day 26
$tm = Get-Date -Date "2020/04/26"
$dstr2 = $tm.ToString("yyyy/MM/dd")

# ヒアドキュメント。二重引用符で囲むと変数展開がされる。一重だとされない
$s = @"
現在時刻は${dstr1}です。
特定の日付とは…${dstr2}です。
"@
echo $s