gpt4 book ai didi

linux - 这个基于 RANDOM 的命令在 bash 中意味着什么?

转载 作者:太空狗 更新时间:2023-10-29 11:31:59 25 4
gpt4 key购买 nike

我正在使用 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}

这会从 char 字符串中提取最多 8 个字符,从字符串中的随机位置开始。

关于linux - 这个基于 RANDOM 的命令在 bash 中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32568640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com