回答:
コマンド出力の変数へのパイピング
あなたのような少し簡単な例
$ a=$(echo abc | grep -o a)
$ echo $a
a
あなたの場合
$ line=asdf.fr
$ a=$(echo $line | grep -Po '.*(?=.fr)')
$ echo $a
asdf
$
行変数$ lineを展開し、実行するとエラーがstderrに書き込まれ、stdoutには何も書き込まれないため、行は失敗しました。異なる意味を持つすべての$は、少しおかしいです。ただし、($のプロンプトで)$$line<ENTER>
実行した場合、コマンドが見つかりません。そして、もしあなたが$$line>a
cat a
そこに何も見えないなら そのため、grepには何のパイプもせず、何も見つかりません。そのため、コマンドのように実行するのではなく、行変数をエコーする必要があります。
$line
含まれてする場所rm -rf /
、それは喜んであなたのシステムを破壊進行します。変数がユーザー/ファイル入力ではなくコンテンツのみを含む場合を除き、変数を実行しないでください。