下面是我在终端中执行的代码
[root@idm ~]# x="$(date +%d%m%y)"
[root@idm ~]# echo $x
270217
[root@idm ~]# echo ${#x}
6
有人可以帮助我理解为什么输出是这样6
吗?#
本质上对变量做了什么?
答案1
它是一个参数扩展,返回参数的长度、数组中元素的数量或位置参数的数量。
请阅读您的 shell 手册。以下内容摘自bash
手册:
${#parameter}
的值的字符长度
parameter
被替换。如果parameter
是*
或@
,则替换的值是位置参数的数量。如果parameter
是数组名,下标为*
或@
,则替换的值是数组中元素的数量。如果parameter
是索引数组名称,下标为负数,则该数字被解释为相对于比参数最大索引大的 1,因此负索引从数组末尾开始倒数,索引 -1 引用最后一个元素。
并且,请不要养成在交互式 root shell 中工作的习惯。这充其量是危险和鲁莽的。请sudo
谨慎使用,并且仅在需要提升权限的情况下使用。bash
作为一个普通的非 root 用户,你绝对可以尝试一下。
在过去的几年中,我只使用交互式 root shell 为自己手动添加单个用户。这是一个 2 分钟的工作,然后我绝不需要#
再次在那台机器上看到提示。
答案2
该#
运算符返回变量的长度。在你的情况下,可变x
长度是六。
请看一下参数替换了解更多信息。