rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

シェルにおける引用符囲みの解釈、スペース/空白の解釈

2020 Jun. 13.
2018 Dec. 06.
 
  • 引用符で囲まれた空白/スペースは「引用符で囲まれた文字列の一部」。トークンの区切りと解釈されない
  • 引用符に囲まれていない空白/スペースはトークン内の文字ではなくトークン区切り記号
  • 引用符に囲まれていない変数に格納された空白/スペースはトークン内の文字ではなくトークン区切り記号
 
$ 'ls -l' '/'
ls -l: コマンドが見つかりません
※ lsと-lの間の空白/スペースはトークンの区切りではない
 
$ "ls -l" "/"
ls -l: コマンドが見つかりません
※ lsと-lの間の空白/スペースはトークンの区切りではない
 
$ s1='ls -l'
$ s2='/'
$ "$s1" "$s2"
ls -l: コマンドが見つかりません
※ lsと-lの間の空白/スペースはトークンの区切りではない
 
$ s1='ls -l'
$ s2='/'
$ '$s1' '$s2'
$s1: コマンドが見つかりません
※ シングルコートでは変数が文字列に展開されない
 
$ s1='ls -l'
$ s2='/'
$ $s1 $s2
※ ls -lの結果が出力される
  引用符に囲まれていない変数は文字列に展開され、それはひとかたまりのトークンとは解釈されず、シェルにそのまま単なる文字として解釈される