Bash “某物”指的是什么
我正在阅读Bash “某物”指的是什么,bash,grep,sh,Bash,Grep,Sh,我正在阅读grep源代码,发现egrep.sh包含以下内容: #!@SHELL@ grep=grep case $0 in */*) dir=${0%/*} if test -x "$dir/@grep@"; then
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@
是如何工作的,甚至不明白它们在使用的上下文中是如何工作的
参考源位于:根据评论,我阅读了,发现
@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 $@
sed-e的|[@]SHELL$(SHELL)| g'\
-e“$$edit_子字符串”\
-e“s|[@]grep@$$grep|g”\
-e“s”[@]选项|$$选项| g”$@-t
$(AM_V_at)chmod a=rx$@-t
$(上午五时)mv$@-t$@
在构建过程中的某个时候,它们可能会被sed
或类似的工具所取代(例如:sed s#@SHELL@/bin/bash
)。“你能链接到你正在查看的版本吗?”CarlNorum在source@CarlNorum你是对的,我没有检查Makefile的sed-e的SHELL$(SHELL)g'\-e“$$edit\u substring”\-e“s”\[@]grep@$$grep“g”\-e“s”option“$$option”$@-t
:)该文件应命名为“egrep.sh.in”或某物.in”。被配置的文件通常命名为“foo.in”,替换(sedding)用于“配置”文件。