若你是RedHat Linux的使用者,或许,已经猜得出/etc/rc.d/init.d/functions这个文件是作啥用的了~~~ ^_^
okay,说要轻松点的嘛,那这次就暂时写到这吧。祝大家学习愉快﹗^_^
第8问:$(( )) 與 $( ) 還有${ } 差在哪?
我们上一章介绍了( )与{ }的不同,这次让我们扩展一下,看看更多的变化:$()与${ }又是啥玩意儿呢?
在bash shell中,$() 与` `(反引号)都是用来做命令替换用(command substitution)的。所谓的命令替换与我们第五章学过的变量替换差不多,都是用来重组命令行:
完成引号里的命令行,然后将其结果替换出来,再重组命令行。
例如:
$ echo the last sunday is $(date -d "last sunday" +%Y-%m-%d)
如此便可方便得到上一星期天的日期了…^_^
在操作上,用$()或` `都无所谓,只是我”个人"比较喜欢用$(),理由是:
` `很容易与' '(单引号)搞混乱,尤其对初学者来说。有时在一些奇怪的字形显示中,两种符号是一模一样的(直竖两点)。当然了,有经验的朋友还是一眼就能分辩两者。只是,若能更好的避免混乱,又何乐不为呢?^_^
在多层次的复合替换中, 须要额外的跳脱(`)处理,而$() 则比较直观。例如:这是错的:
command1 `command2 `command3` `
原本的意图是要在command2 `command3`先将command3提换出来给command2处理,然后再将结果传给command1 `command2…`来处理。然而,真正的结果在命令行中却是分成了`command2`与` `两段。正确的输入应该如下:
command1 `command2 `command3` `
要不然,换成$()就没问题了:
command1 $(command2 $(command3))
只要你喜欢,做多少层的替换都没问题啦~~~ ^_^
不过,$()并不是没有斃端的…
首先,`基本上可用在全部的unix shell中使用,若写成shell script,其移植性比较高。而$()并不见的每一种shell都能使用,我只能跟你说,若你用bash2`的话,肯定没问题…^_^
接下来,再让我们看${}吧…它其实就是用来作变量替换用的啦。一般情况下,$var与${var}并没有啥不一样。但是用${}会比较精确的界定变量名称的范围,比方说:
$ A=B $ echo $AB
原本是打算先将$A的结果替换出来,然后再补一个B字母于其后,但在命令行上,真正的结果却是只会提换变量名称为AB的值出来…若使用${}就没问题了:
$ echo ${A}B
BB
不过,假如你只看到${}只能用来界定变量名称的话,那你就实在太小看bash了﹗为了完整起见,我这里再用一些例子加以说明${}的一些特异功能。
假设我们定义了一个变量为:










