🧙
PowerShell⇔Bash 特殊記号の対応表
PowerShell(Bash)をたまに何かの機会で触ると「あの特殊文字ってPowershell(Bash)だとどう表現するんだっけ??」と思いませんか。しかも記号なのでググりにくい。
私の場合たまにShellScriptを書くと忘れていることが多々あり調べるのが億劫なので、早見できるようにBashとPowerShellの特殊文字の記法をまとめてみました。
サマリ
使用頻度の高いものをピックアップしていますが、都度都度追記していきます。
網羅的になってはいない点はあらかじめご了承ください。
- 共通(記号)
意味 | 記号 |
---|---|
変数展開 | $変数名 |
変数の境界 | ${変数名} |
内部展開ありの文字列 | " |
内部展開なしの文字列 | ' |
連続実行 | ; |
パイプライン | | |
コメントアウト | # |
-共通でない(記号)
意味 | Bash | PowerShell |
---|---|---|
変数宣言 | declare 変数名=値 | $変数名=値 |
配列宣言 | declare -a 配列名=(値1 値2) | $配列名=@(値1,値2) |
配列の取り出し | ${変数名[インデックス]} | $変数名[インデックス] |
連想配列宣言 | declare -A 連想配列名=(['キー']=値) | $連想配列名=@{'キー'='値'} |
連想配列の取り出し | ${連想配列名['キー']} "${連想配列名["キー"]}" |
$連想配列名['キー'] "$($連想配列名.キー)" |
環境変数 | $ | $env: |
コマンド置換 | `` $() |
() $() |
改行コード | \r\n | `r`n |
タブ | \t | `t |
コマンド内改行 | \ | ` |
エスケープ | \ | ` |
変数の外出し | source . |
. |
連続コマンド(AND/OR) | AND…&& OR…|| |
なし※ |
※PowerShell 7 Preview.5で追加されたようです。Windows Powershell(5.x)では使えません。
使用例
実行環境
-
PowerShell…7.3.3
-
Bash…5.1.8
-
変数
PowerShell
$fruit='りんご'
Bash
declare fruit='りんご'
- 配列
PowerShell
$fruits=@('りんご','ばなな')
Bash
declare -a fruits=('りんご' 'ばなな')
- 配列の取り出し
PowerShell
Write-Output $fruits[0]
Bash
echo ${fruits[0]}
- 連想配列
PowerShell
$price=@{'りんご'=100;'ばなな'=200}
Bash
declare -A price=(['りんご']=100 ['ばなな']=200)
- 連想配列の取り出し
PowerShell
Write-Output $price['りんご']
Bash
echo ${price['りんご']}
- 環境変数
PowerShell
Write-Output $env:PATH
Bash
echo $PATH
- コマンド置換
※ダブルクォートの中では()
は文字列として評価されるので$()
を使用します。
PowerShell
Write-Output "現在の時刻は$(Get-Date)です。"
Bash
echo "現在の時刻は`date`です。"
- 改行コード
PowerShell
Write-Output "からころも`r`nきつつなれにし`r`nつましあれば`r`nはるばるきぬる`r`nたびをしぞおもふ (伊勢物語)`r`n"
Bash
echo -e "からころも\nきつつなれにし\nつましあれば\nはるばるきぬる\nたびをしぞおもふ (伊勢物語)"
- タブ
PowerShell
Write-Output "[`t]"
Bash
echo -e "[\t]"
- コマンド内改行
PowerShell
Write-Output `
'改行できました!'
Bash
echo \
'改行できました!'
- エスケープ
PowerShell
Write-Output "この商品のお値段はなんと`"`$${price}`"です!!"
Bash
echo "この商品のお値段はなんと\"\$${price}\"です!!"
- 連続コマンド(AND/OR)
PowerShell
gecho && echo 'このechoは実行しません'
gecho || echo '失敗しても実行します'
Bash
gecho && echo 'このechoは実行しません'
gecho || echo '失敗しても実行します'
まとめ
整理してみると思いのほか書き方の違う部分が多いですね。
ところで参考資料に出てきたサムネ、PowerShellとかPosh-Chanと呼ばれているようです。。。
参考資料
Discussion
いつも迷ってて、こういうまとめ助かります。ありがとうございます。
連想配列はよく使うので、こんな例も混ぜていただけるとありがたいです。
Bash:
"${連想配列名["キー"]}"
PowerShell:( 連想配列名['キー'])"( 連想配列名.キー)"
"
または
"
※PowerShell は書式というより $() で「式として評価」
追記しました、ありがとうございます!