@ something @指的是什么

时间:2014-06-13 18:49:37

标签: bash grep sh

我正在阅读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

1 个答案:

答案 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 $@