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」です。 。