>2&1 を評価すると「-bash:1: コマンドが見つかりません」が発生する [閉じる]

>2&1 を評価すると「-bash:1: コマンドが見つかりません」が発生する [閉じる]

cppgrepから返された数をどのように元に戻すことができますか?。私のスクリプトは次のメッセージで失敗します。-bash: 1: command not found

単純化されたテストケースは次のとおりです。

$ echo `cpp -dM -fsanitize=undefined < /dev/null > /dev/null >2&1`
-bash: 1: command not found

1Bashがコマンドで実行しようとしているのはなぜですか。エラーを解決するにはどうすればよいですか?

答え1

@steeldriverが指摘したように、問題は誤って設定されたioリダイレクトが原因で発生します。理由は次のとおりです。

    cpp  > 2   &   1

cpp プロセスがバックグラウンドに配置され、出力が「2」というファイルにリダイレクトされます。 & 記号もセミコロンのようなコマンド区切り文字なので、行の次のコマンドはシェルが見つからない「1」です。 。

関連情報