人分三六九等,地分东南西北,虽然众生皆平等,但是尊卑仍然有别。汉语习惯是以右为尊,成语“无出其右”,将右视为尊,将左视为卑。放眼印度,尊卑更加严重,其种姓制度举世皆知。
人类的文字和符号的演化进程,总有先后之序,映射到shell世界,亦充斥着尊卑之说。虽然#和$是对孪生兄弟,都是命令提示符,但是#表示root用户,内含尊贵之意,$表示非root用户,暗含卑微之义。
延伸到更广阔的天地,这种差别同样明显。空间分为有序和无序之别,犹如列表和集合。在用法上,#常用于表示序数,例如楼房号等。后来,我查阅百科发现,跟我的猜想类似:在unicode编码中建议称#为number sign,因为它常用于表示序数。
获取字符串变量,只需${var}足矣,但是要想获取字符串长度,带有量的内涵,则需要#加持,即为${#var},如下所示:
website=shelltalk
echo ${#website}
字符串是字符的数组构成,推而广之,则${#var}也适用于获取数组的长度,即为${#var[@]}。
另外,传递给脚本或函数的参数,隐含着数组之意,所以$#用于表示传递给脚本或函数的参数个数。与$#对应的是$$,而$$表示为当前shell进程ID。
备注:在CSS样式表中,ID选择器,以#号开头,只能出现一次;类选择法,以点开头,可以多次。
评论专区
评论加载中...登录后即可发表评论