关于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
今天在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
转载于:https://blog.51cto.com/jasonyong/168219