試した環境
- WSL バージョン: 1.1.3.0
- Ubuntu 20.04.5 LTS (GNU/Linux 5.15.90.1-microsoft-standard-WSL2 x86_64)
- GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)
本題
bashにおいてパラメータ展開の文字列$HOGE
をシングルクォートで囲った場合はパラメータは展開されません。
ダブルクォートで囲った場合はパラメータが展開されます。
$ WIDTH=1920 $ HEIGHT=1920 $ echo $WIDTH 1920 $ echo '$WIDTH' $WIDTH $ echo "$WIDTH" 1920
ただし、シングルクォートで囲ってそれをさらにダブルクォートで囲った場合は、パラメータが展開されます。
$ echo "size='$WIDTH $HEIGHT'" size='1920 1080'
逆にダブルクォートで囲ってそれをさらにシングルクォートで囲った場合は、パラメータが展開されません。
$ echo 'size="$WIDTH $HEIGHT"' size="$WIDTH $HEIGHT"
おまけとして、三重に囲おうとした場合は、パラメータ文字列の部分が結果的にクォート(ダブルクォート)で囲われていないことになるので、パラメータが展開されます。
$ echo 'parameter "--size='$WIDTH $HEIGHT'"' parameter "--size=1920 1080" $ echo "parameter '--size="$WIDTH $HEIGHT"'" parameter '--size=1920 1080'