1

こんにちは、私が書いたこの単純な bash スクリプトへの入力のフィードについて質問があります。コンパイル操作に一連のフラグを追加して、毎回自分でフラグを書き込む必要がないようにするだけです。を使用して実行できますecho myprogram.c -o myprogram -llibrary | ./Compile。しかし、期待どおりに実行する方法が見つかりません。./Compile < myprogram.c -o myprogram -llibrary 引用符と括弧の組み合わせをいくつか試してみましたが、役に立ちませんでした。エコーによって生成されたのと同じ入力を供給する方法を誰か教えてください。リダイレクト入力コマンドを使用します。

#!/bin/bash
# File name Compile
#Shortcut to compile with all the required flags, name defaulting to
#first input ending in .c
echo "Enter inputs: "
read inputs
gcc -Wall -W -pedantic -std=c89 -g -O $inputs
exit 0
4

2 に答える 2

2

プロセス置換を使用できます:

./Compile < <( echo myprogram.c -o myprogram -llibrary )

上記の行は、元のコマンドと同じ結果を生成します。

echo myprogram.c -o myprogram -llibrary | ./Compile
于 2013-02-18T13:49:50.297 に答える
2

シェルを次のように変更するだけです。

#!/bin/bash
gcc -Wall -W -pedantic -std=c89 -g -O "$@"

次に、次のように書くことしかできません(リダイレクトは不要です):

./Compile myprogram.c -o myprogram -llibrary

exit 0ところで、このシェルの最後に明示的に書かないでください。成功した場合は冗長gccであり、gcc が失敗した場合は正しくありません (終了コード 1 が上書きされます)。

于 2013-02-18T13:57:15.537 に答える