高级练习
9. 编写一组命令或者一个脚本来证明变量扩展在路径名扩展之前执行。
10. 编写一个shell脚本输出正在执行的shell的名称。
11. 解释下面的shell脚本的行为:
$ cat quote_demo
two1iner="This is line 1.
This is line 2."
echo "$twoliner"
echo $twoliner
a. 在这个脚本中每个echo命令将会获取多少个参数?
b. 重新定义IFS,使第2个echo的输出与第1个echo的输出相同。
12. 将前一条命令的退出状态添加到提示符中,使其表现得如下所示:
$ [0] ls xxx
ls: xxx: No such file or directory
$ [1]
13. dirname工具将它的参数作为一个路径名,并将该路径前缀(不包含最后部分的整个串)写到标准输出:
$ dirname a/b/c/d
a/b/c
如果只给dirname一个简单的文件名(不含字符/)作为参数,dirname将写一个.字符到标准输出:
$ dirname simple
.
用一个bash函数实现dirname。要确保当参数为/之类时,该函数也能很好地处理。
14. 用bash函数实现basename工具,它将路径名参数的最后部分写入到标准输出。举例来说,给定路径名a/b/c/d,basename将d写入到标准输出:
$ basename a/b/c/d
d
15. Linux的bashname工具有一个可选的第2参数。如果输入命令basename path suffix,basename将从path中删除suffix和前缀:
$ basename src/shellfiles/prog.bash .bash
prog
$ basename src/shellfiles/prog.bash .c
prog.bash
将这项功能添加到第14道题目中编写的函数中。






