Non-modern Shell Programing (1)
Heirloom Bourne ShellとSingle Unix Specificationを教科書に、現代的でないシェルプログラミングについて話す。
#! /bin/sh set -eu p() { printf '[ %s ]' "$@" printf '\n' } x=foo y=bar p "`p \"\`p \\\"\\\\\\\\$x \\\\\\\\$y\\\"\`\"`"
ぼくたちがシェルだったとしたら、ぼくたちはシェルではないのだけれど、ぼくたちはたぶん以下のように出力する。
[ [ [ \foo \bar ] ] ]
現代的でないシェルプログラミングを始めるにあたって、ダブルクォートとバッククォートの複雑な関係、つまり"\...\"形式のコマンド置換について整理することから始める。現代的でないので、$(...)形式のコマンド置換や算術展開は考慮しない。なお、SUSv4のShell Command Languageを参照する。