exec <ファイル名 - これは何をしますか?

exec <ファイル名 - これは何をしますか?

次のコードスニペット(sh)が見つかりました。

    TESTFILE=$TEST_PATH/test.out
    if [ -f $TESTFILE ]
    then
        exec < $TESTFILE
    else
        echo "$TEST_PATH: no test.out file"
    fi

私の質問のポイントは、この行が何をしているかです。 (残りは分かります!)

        exec < $TESTFILE

ファイルは実行可能ではなく、他のプロセスを呼び出すこともなく、execがプレーンテキストファイルに対して実行する操作を見つけることができませんでした。

ベストアンサー1

直感的な理解のために、次のパターンを観察することが役に立ちます。

cmd                  # fork; execute cmd in child
cmd < /dev/null      # fork; redirect stdin and execute cmd in child
exec cmd             # execute cmd; no fork
exec cmd < /dev/null # redirect stdin and execute cmd; no fork
exec < /dev/null     # redirect stdin; no fork and no execution

ご覧のとおり、execこれはまったく問題ではありません。これは反対です。 「実行」を意味するものはまったくありません。これは「終わらないで」を意味します。現在のプロセス内でコマンドのリダイレクトおよび/またはコマンドの実行が発生します。

おすすめ記事