sedを使用して、次のコマンドを実行しようと指定していた際にエラーの原因が分からず何十分かくらい悩んでいました。
sed -n '$l,$lp'
実行結果は、lに格納されている値の行をとってきたかったのですが、ずっと以下のようなエラーが出ていました。
sed: -e expression #1, char 3: unknown command
いやいや、コマンドラインで格納されている値にしたら結果でるんだから、エラーであるのおかしくない?と思いながらも、 エラー原因を探してみると、以下のような原因らしいです。
コマンドラインやシェル・スクリプトの中で使う時には、 sed の命令を引用符「''」で括るとよい。 引用符「''」は、シェルによりはがされ、 sed コマンド本体には渡されない。 引用符「''」で括らなかった時には、「$」や「*」など が、シェルによって解釈され、sed には渡されない。 シェル・スクリプトで、引数やシェル変数を参照したい時には、 sed のコマンド全体を引用符「''」で 括り、その中で変数の部分だけ引用符を解除する。
-(1)
なるほど~!ではと思い、変数をシングルコーテーションでくくった結果、上手く行きました。
sed -n ''$l','$l'p'
参考URL (1)http://www.coins.tsukuba.ac.jp/~yas/coins/syspro-2001/2001-06-25/