私は同僚のシェルコードを見ていましたが、次のようなものを見ました。
date 2&>$0
日付が何であるかはわかりますが、2&> $ 0は何をしていますか?しばらく外出しているので、この部分が何なのかは尋ねられません。
ベストアンサー1
投稿したコードが正しいと仮定すると、奇妙なことが起こります。それ:
- 走る
date 2
、これは有効な呼び出しではなく、date
エラーメッセージを生成します。 - 標準出力と標準エラーをリダイレクトします。そして
&>
、 - 実行中のスクリプトを含むファイルに移動します(
$0
)、既存のコンテンツを削除してください。
Bashがスクリプトを読み取る方法はファイルから一度に1行をインポートするため、上書きされたファイルから意味のないコンテンツを取得して終了します(ファイルがその行が表示される点よりも短く切り捨てられたため)。 )またはgive文法エラーが発生します(元のテキストが非常に短く、一部のエラーが次の行に読み込まれる場合)。
私はその行に対するどんな正当な使用も考えることはできませんが、あなたが言ったように、あなたはそれが書かれているように正確に提供し、それがまさにそれです。
厳密に言えば、他の値を割り当てることができるので、$0
次のオプションでBashを呼び出してこのコードを非破壊的に実行することができます-c
。bash -c "$(<test.bash)" output-file
エラーメッセージをに入れoutput-file
ますが、そうすることは完全に正当ではありません。