Linux的Shell脚本中是如何处理形如$i++ 这种语句的?

假如,有如下的脚本:
i=1;
while [ $i -lt 10 ]
do
echo $i
$i++
done

其中$i++这个语句是如何执行的?
我问的就是,执行这句话的时候是要把此语句编译成机器码还是用别的机制执行的?
多谢。
谢谢你们的回答。
但是,你们没有回答我要的答案。正如 ④猞俉杁 所说的,$i++被替换为1++,那么此时 1++ 是怎么得到2的?命令解释器用什么把 1++ 算成2的?

2009年5月24日16:54:44 补充
stablish 您好!我想我明白您说的意思了:
假设现在编写一个add程序,但是要求输入2个参数,即输入两个要计算加法的数;
形如: add 2 3
最后得到结果5.
上面我说的$i其实只是对于Shell来说的一个参数,Shell会正确地处理它,而且如何处理$i++的机器码已经在Shell中了,那么也就不用我们考虑了。

谢谢!
最新回答
绝绝子

2024-12-02 02:23:51

shell本身就是个命令解释器 ,不会编译成机器码 ,

命令解释器这个名字就能解释你的问题了

"命令解释器用什么把 1++ 算成2的"

我觉得你钻牛角尖了, 这是个黑箱 ,shell作为命令解释器的存在,对各种输入都有对应的解释方式 ,至于具体如何实现,那要看shell的源码了, 这是个黑箱情况

你的问题就好像C编译器如何识别 i++的 一样,只是不同的是 C编译器将i++生成机器码 ,而shell内建$i++的处理方式
梨花雨凉

2024-12-02 08:15:42

shell先将此程序扫描一遍,把$i++替换为1++。然后的再开始执行。shell程序跟C、CPP程序不一样,不需要编译,直接运行。