grepの結果から行を実行する方法は?

grepの結果から行を実行する方法は?

いくつかのインストール手順を含むテキストファイルがあり、ファイル内の一意のエントリを見つけるためにgrepを使用できることがわかります。たとえば、テキストファイルの内容は次のとおりです。

MYDIR=`/home/user -name somedir を探す`
エクスポートPERL5LIB=$PERL5LIB:$MYDIR

bashでファイルのgrep次の行を実行するには?それは次のとおりです。

「grep somedir INSTALLFILE」実行結果
"grep 'export PERL5LIB' INSTALLFILE" 実行結果

答え1

別のシェルプロセスで行を評価するには、次の手順を実行します。

grep somedir INSTALLFILE | sh

実行中のシェルプロセス内で行を評価するには、次の手順を実行します。

eval "$(grep somedir INSTALLFILE)"

答え2

仮定:

  • あなたはファイルを制御することができ、マルウェアの危険性はありません。
  • この変数を現在のシェルに設定したい

コマンドを一時ファイルにリダイレクトし、次のコマンドを実行できます。

tmp=$(mktemp)
{
    grep somedir INSTALLFILE
    grep 'export PERL5LIB' INSTALLFILE
} > "$tmp"
. "$tmp"

あるいは、結果を評価することもできます。

eval "$(grep somedir INSTALLFILE)"
eval "$(grep 'export PERL5LIB' INSTALLFILE)"

以前の回答を更新してください。今日私がやるべきことは、プロセス置換を使用することです。

source <(
    grep somedir INSTALLFILE
    grep 'export PERL5LIB' INSTALLFILE
)

答え3

次のようにfindの「exec」機能を試しましたか?

find somedir -name INSTALLFILE -exec {}\;

関連情報