我有一个小的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引用($cfile
,$stem
)没有得到它们的最终形式,所以回声变得毫无用处。
你知道,我喜欢看的是
gcc -c -g -Wall client2.c
gcc -o client2 client2.o common.o reentrant.o -lssl -lcrypto
是否有正确而简洁的方法来解决这个问题?
BTW:次要请求:我可以抑制set +o verbose
本身的回声吗?
答案 0 :(得分:2)
将set -o verbose
替换为set -x
答案 1 :(得分: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