LOCK_FD=200
LOCK_FILE=/tmp/lock-file
exec ${LOCK_FD}>${LOCK_FILE}
エラーが発生しました。
exec: 200 not found
しかし、これはうまくいきます
LOCK_FD=200
LOCK_FILE=/tmp/lock-file
eval "exec ${LOCK_FD}>${LOCK_FILE}"
理由をご存知ですか?
ベストアンサー1
変数が拡張される前にリダイレクトが行われるためです。man bash
どちらが最初に完了したかはわかりません。
リダイレクトコマンドが実行される前に、対応する入力と出力がリダイレクトされることがあります。 。 。
EXPANSION拡張は、コマンドラインが単語に分割された後に実行されます。
リダイレクトを完了して削除した後、存在しないジョブをexec
実行しようとするとエラーメッセージが表示されます。200