これは{fd}
プレースホルダーではなく、文字通りの意味です。私はこれを行い、何も参照しないスクリプトがあり、他の場所では{fd}も参照しません。これは有効なbashですか?
exec {fd}</dev/watchdog
答え1
ファイル記述子を選択して使用可能にしたいのではなく、
exec 4< /dev/watchdog # Was 4 in use? Who knows?
この表記法は、シェルに現在使用されていないファイル記述子を選択し、その記述子を読み取るためにファイルを開き、指定された変数(fd
)に番号を割り当てるように要求します。
$ exec {fd}< /dev/watchdog
$ echo $fd
10
答え2
シート:
{var}<filename
シェルがファイルを読み取るために開き、filename
ファイル記述子番号を変数に保存しますvar
。とリダイレクト演算子の間にスペースを入れることはできません。{var}
ファイル記述子番号は同じでなければなりません10
。
この機能はもともとksh
2006年のksh93rバージョンで提供され、2010年bash
からbash-4.1-alpha
コピーされました。 2007年よりzsh
早く変更された事項もあります。bash
zsh 4.3.4
答え3
これについては Bash のマニュアルセクションで説明します。リダイレクト。
各リダイレクトの前にファイルディスクリプタ番号を付けることができますが、{形式の単語が先頭になることもあります。変数名}。この場合
>&-
を除くすべてのリダイレクト演算子に対して、<&-
シェルは10より大きいファイル記述子を割り当て、{変数名}。 { の場合>&-
または<&-
前に来る場合変数名}、の価値変数名閉じるファイル記述子を定義します。