• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:sedの引数を変数に格納する方法)

sedの引数を変数に格納する方法

このQ&Aのポイント
  • sedコマンドで引数を変数に格納する方法を理解したいです。
  • 変数にsedコマンドの引数を格納する方法について教えてください。
  • sedの引数を変数に代入する方法が分かりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

evalを使わないと駄目みたいです。 regex='-e "s/.*\(b.*e\).*/\1/" -e "s/.*b c *\(.*\) .*/\1/"' echo a b c d e f | eval sed $regex

inshin
質問者

お礼

ご回答いただきまして、ありがとうございます。 エスケープで対応できないのはなぜでしょうか? よろしくお願いいたします。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

>クォートが本来のクォートとして機能せず、文字として認識されるという意味でしょうか? はいそういう意味です。 A="'*'" echo $A ⇒ '*' と、クォートが効いているように見えるが、 touch "'foo'" ls ⇒ 'foo' echo $A ⇒ 'foo' と、「'*'」は「'」で始まり「'」で終わるファイル名にマッチする

inshin
質問者

お礼

そういうことでしたか。ありがとうございました。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

>エスケープで対応できないのはなぜでしょうか? クォートを外す処理の方が、変数展開よりも先に行われるため、変数内のクォートは除去されません。なので、クォートが残ってしまい、【未知のコマンドです: 「"」】のようなエラーになります。

inshin
質問者

お礼

ご回答いただきまして、ありがとうございます。 すみません、「クォートを外す処理が展開より先に行われ、クォートが残る」のイメージが湧きません^^; クォートが本来のクォートとして機能せず、文字として認識されるという意味でしょうか?

関連するQ&A