关于bash的执行过程

今天在chinaunix上面看到一个帖子。
#! /bin/sh
a=b echo $a
echo $a

这个脚本的执行结果是什么?为什么?



看似简单,短短的两行代码。一个赋值,两个echo。但是运行的结果和我想得就

很不一样。想着应该要输出一个b,但是实际上。。。。两个空行。


多少人讨论了,都没有一个正确的结果,最后还是 网中人 大牛给了一个解释。

我到现在还是有点意思很清楚。。。

他说的几个概念,命令的重组,扩展。。。等等。。。

看样子真好仔细好好学习了。不能这样装明白下去了。一定学习东西都时候仔细

研究,很多看似简单的东西都有很复杂的理论知识。

回到这个题上,大概先写一下,以后可能还要参考。

a=b echo $a
首先:扩展命令。$a没有赋值,所以这个命令变成 a=b echo

执行这个命令,就是一个空行。这里的a=b,只会影响子shell,不会对全局

shell环境有什么影响。

所以第二个echo $a,还是一个空行。



我现在只能理解这么多了。


网中人 大牛还解释了很多顺序,还不是很理解。先写到这,好好回味下,希望

可以消化好。


这个帖子的地址是:http://bbs2.chinaunix.net/viewthread.php?

tid=1393874&extra=&page=1