我正在阅读grep
源代码并找到egrep.sh
,内容如下:
#!@SHELL@
grep=grep
case $0 in
*/*)
dir=${0%/*}
if test -x "$dir/@grep@"; then
PATH=$dir:$PATH
grep=@grep@
fi;;
esac
exec $grep @option@ "$@"
我似乎不明白@SHELL@
@grep@
和@option@
的工作原理,甚至不知道他们在使用环境中的行为
参考来源位于:http://git.savannah.gnu.org/cgit/grep.git/tree/src/egrep.sh
答案 0 :(得分:1)
根据评论,我看了Makefile
,发现@something@
占位符代替sed
,如下所示:
sed -e 's|[@]SHELL@|$(SHELL)|g' \
-e "$$edit_substring" \
-e "s|[@]grep@|$$grep|g" \
-e "s|[@]option@|$$option|g" <$(srcdir)/egrep.sh >$@-t
$(AM_V_at)chmod a=rx $@-t
$(AM_V_at)mv $@-t $@