1

私はこのようなコマンドを実行します

echo 'int main(){printf("%lu\n",sizeof(void));}' | gcc -xc  -w -&& ./a.out

そして結果を得ることができます:1。しかし、-&& の意味がわかりません。man ページを検索して google! を実行しても、-&& オプションを指定せずに実行しようとすると、次のようなエラーになります。

./a.out:1: error: stray ‘\317’ in program
./a.out:1: error: stray ‘\372’ in program
./a.out:1: error: stray ‘\355’ in program
./a.out:1: error: stray ‘\376’ in program
./a.out:1: error: stray ‘\7’ in program
./a.out:1: error: stray ‘\1’ in program
./a.out:1: error: stray ‘\3’ in program
./a.out:1: error: stray ‘\200’ in program
./a.out:1: error: stray ‘\2’ in program
./a.out:1: error: stray ‘\16’ in program
./a.out:1: error: expected identifier or ‘(’ before numeric constant
./a.out:1: error: stray ‘\6’ in program
./a.out:1: error: stray ‘\205’ in program
./a.out:1: error: stray ‘\31’ in program
./a.out:1: error: stray ‘\1’ in program
./a.out:1: error: stray ‘\31’ in program
./a.out:1: error: stray ‘\2’ in program

……

オプションの意味を誰が知っていますか?

4

1 に答える 1

13

-&&は、シェルによって単一のトークンとしてではなく、2 つの別個のトークンとして解釈されます:-および&&. トークンはシェルにとって特別な意味を持たず、-引数として に渡されgcc、標準入力からソースを読み取る命令として解釈されます。and&&で 2 つのコマンドを接続するシェル演算子です。 ( ) が正常に終了した場合にのみ( )を実行します。A && BBa.outAecho ... | gcc ...

gcc ... && ./a.out単純なものの代わりに使用するポイントは、コンパイルが成功した場合にのみgcc ...; ./a.out実行し、古いものが実行されるのを防ぐことです。a.outa.out

于 2013-07-18T06:43:04.477 に答える