1

小さな bash スクリプトがありますbuild1c.sh

if [ "$1" = "" ]; then
    echo "You must give a .c file to compile."
    exit 1
fi

cfile=$1
stem=${cfile%.*}

set -o verbose

gcc -c -g -Wall $cfile
gcc -o $stem $stem.o common.o reentrant.o -lssl -lcrypto

set +o verbose # optional here

意図は、実行中の gcc コマンドのみをエコーすることです。私はある程度働いています。を呼び出すとbuild1c.sh client2.c、出力が表示されます

gcc -c -g -Wall $cfile
gcc -o $stem $stem.o common.o reentrant.o -lssl -lcrypto

set +o verbose # optional here

まだ奇抜ですよね?これらの var reference( $cfile, $stem) は最終的な形式を取得しないため、エコーはほとんど役に立たなくなります。

私が見たいのは

gcc -c -g -Wall client2.c
gcc -o client2 client2.o common.o reentrant.o -lssl -lcrypto

これに対処するための正確で簡潔な方法はありますか?

ところで: ちょっとしたリクエスト:set +o verbose自分自身のエコーを抑制できますか?

4

2 に答える 2

2

set -o verboseと置き換えますset -x

于 2012-05-05T11:53:49.920 に答える
2
function echo_and_execute {
    echo "$@"
    "$@"
}

echo_and_execute gcc -c -g -Wall $cfile
echo_and_execute gcc -o $stem $stem.o common.o reentrant.o -lssl -lcrypto
于 2012-05-05T12:42:21.920 に答える