下面是我在终端中执行的代码
[root@idm ~]# x="$(date +%d%m%y)"
[root@idm ~]# echo $x
270217
[root@idm ~]# echo ${#x}
6
Run Code Online (Sandbox Code Playgroud)
有人能帮我理解为什么输出6吗?什么是#主要做给变量?
Kus*_*nda 29
它是一个参数扩展,返回参数的长度,或数组中的元素数,或位置参数的数量。
请阅读您的 shell 手册。以下内容来自bash手册:
${#parameter}值的字符长度
parameter被替换。如果parameter是*或@,则替换的值是位置参数的数量。如果parameter是一个以*or为下标的数组名称@,则替换的值是数组中的元素数。如果parameter是一个下标为负数的索引数组名称,则该数字被解释为相对于大于参数最大索引的一个,因此负索引从数组的末尾开始计数,并且索引 -1 引用最后一个元素.
而且,请不要养成在交互式 root shell 中工作的习惯。这充其量是危险和鲁莽的。sudo仅在需要提升权限的情况下谨慎使用。玩弄bash的东西,你绝对可以做一个普通的非root用户。
在过去的几年里,我只使用交互式 root shell 为自己手动添加一个用户。这是一个 2 分钟的工作,然后我再也不需要#在那台机器上看到提示了。
| 归档时间: |
|
| 查看次数: |
5086 次 |
| 最近记录: |