![>2&1 を評価すると「-bash:1: コマンドが見つかりません」が発生する [閉じる]](https://linux33.com/image/76047/%26gt%3B2%26amp%3B1%20%E3%82%92%E8%A9%95%E4%BE%A1%E3%81%99%E3%82%8B%E3%81%A8%E3%80%8C-bash%3A1%3A%20%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%8C%E8%A6%8B%E3%81%A4%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%8D%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%99%E3%82%8B%20%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
cpp
私grepから返された数をどのように元に戻すことができますか?。私のスクリプトは次のメッセージで失敗します。-bash: 1: command not found
。
単純化されたテストケースは次のとおりです。
$ echo `cpp -dM -fsanitize=undefined < /dev/null > /dev/null >2&1`
-bash: 1: command not found
1
Bashがコマンドで実行しようとしているのはなぜですか。エラーを解決するにはどうすればよいですか?
答え1
@steeldriverが指摘したように、問題は誤って設定されたioリダイレクトが原因で発生します。理由は次のとおりです。
cpp > 2 & 1
cpp プロセスがバックグラウンドに配置され、出力が「2」というファイルにリダイレクトされます。 & 記号もセミコロンのようなコマンド区切り文字なので、行の次のコマンドはシェルが見つからない「1」です。 。