$ msysinfo | head -3
msysinfo-1.3: Send this to the MSYS support list:
MSYS 1.0.11(0.46/3/2) 2004-04-30 18:55 i686 unknown; targ=MINGW32
$ echo '__copyright="`grep Copyright ./autogen.sh | head -1`" && echo $__copyright' >test.sh
$ cat test.sh
__copyright="`grep Copyright ./autogen.sh | head -1`" && echo $__copyright
$ sh test.sh
# Copyright 2005, 2006, 2007, 2008 by
对于这个测试,我从某个地方复制了 autogen.sh,比如......随机...... http://svn.ghostscript.com/ghostscript/tags/freetype-2.3.7/autogen.sh
可能这意味着您的问题需要更多信息。
但是......有时当我遇到棘手的情况时,将破坏代码包含在( )
. 从技术上讲,您也不需要" "
反引号,这会使某些使用变得复杂,但是您的示例似乎没有问题。
我真的很讨厌提出以下建议,因为这似乎完全没有必要:
$ for item in `grep Copyright ./autogen.sh`;
do
__copyright="$__copyright $item";
done;
echo $__copyright
更奇怪的是,您的错误消息似乎暗示 autogen.sh 本身产生了错误,就好像 autogen.sh 正在自我寻找一样,所以我这样做了:
$ sh test.sh
__copyright="`grep Copyright ./test.sh | head -1`" && echo $__copyright
在将 test.sh 修改为 grep 本身之后,甚至可以正常工作。
因此,这听起来像是一个排序问题,而不是一个反引号问题,你知道,先有鸡还是先有蛋?
autogen.sh 是否试图阅读自己的版权评论?让评论作为数据的一种方法是将它们包装在此处的文档中:
_Copyright ()
{
cat <<-END_OF_TEXT
# Copyright 2012, me
END_OF_TEXT
}
_Copyright