[英]What does this RANDOM-based command mean in bash?
我正在使用RANDOM变量生成一个由8个字符组成的字符串,但是我不完全了解它的工作原理。 该命令的结构为${char:offset:length}
:
char="1234abcdABCD"
echo -n ${char:RANDOM%${#char}:8}
有人可以解释它是如何工作的吗? 特别是RANDOM%${#char}
吗? 在这种情况下, %
和#
是什么意思?
逐步进行操作:
$ echo ${#char}
12
这返回了char
字符串的长度。 它在bash
联机帮助页的“参数扩展”部分中进行了说明。
$ echo $(( RANDOM % 12 ))
11
$ echo $(( RANDOM % 12 ))
7
$ echo $(( RANDOM % 12 ))
3
这将对RANDOM
执行模数( %
)操作。 RANDOM
是一个bash
特殊变量,每次读取时都会提供一个新的随机值。 RANDOM
记录在“ Shell变量”部分; “算术评估”部分中的模数。
$ echo ${char:0:8}
1234abcd
$ echo ${char:4:8}
abcdABCD
$ echo ${char:8:8}
ABCD
这将执行子字符串提取。 它记录在“参数扩展”部分。
放在一起:
$ echo -n ${char:RANDOM%${#char}:8}
这提取到的8个字符char
字符串,起始于字符串中的随机位置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.