假设这样一个简单的sh文件:
#!/bin/bash
a=
b=${a:- ; 456}
echo $b
使用bash执行的时候,bash的词法分析、语法分析、以及执行过程是怎样的?
比如:b=${a:- ; 456}
这一行,究竟拆分成几个单词?以及变量扩展后的执行过程?
关于bash分词、以及变量扩展的规则有一些困惑。多谢解答!
问题补充:
- 空格和分号均为bash元字符,那么在第一步分词阶段,
b=${a:- ; 456}
是分割为 以下5个单词吗?单词1:b=${a:-
;单词2:空格
;单词3:分号
;单词4:空格
;单词5:456}
是这样吗?如果不是,第一步分解成哪几个单词?
${
开始的 parameter expansion 是有特殊处理的。其中两个匹配的大括号之间的内容不会被分开。