欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

macos shell 得到两个随机的大写的英文字符 文心一言 通义 AG chatgpt 有大用 有大大用


echo $(openssl rand -base64 2 | tr -dc 'A-Z' | head -c 2)  #它有时得到两个,有时得到一个,有时得到零个


在 macOS 上,你可以使用 Bash shell 脚本结合 $RANDOM 或其他工具来生成两个随机的大写英文字符。以下是一个简单的 Bash 脚本示例,它使用 $RANDOM 来生成两个随机大写字母:

bash复制代码

#!/bin/bash  



# 生成第一个随机大写字母  

random_num1=$(( (RANDOM % 26) + 65 ))  # 生成65到90之间的ASCII码,对应A-Z  

random_char1=$(printf "\\$(printf '%03o' $random_num1)")  # 将ASCII码转换为字符  



# 生成第二个随机大写字母  

random_num2=$(( (RANDOM % 26) + 65 ))

random_char2=$(printf "\\$(printf '%03o' $random_num2)")



# 打印结果  

echo "$random_char1$random_char2"

在这个脚本中,我们首先使用 $RANDOM 生成一个随机数然后对这个随机数取模 26 并加上 65,以确保结果在 ASCII 码的大写字母范围内(65-90)。接着,我们使用 printf 命令和 ASCII 码的八进制表示来将数字转换为对应的字符。

 (下面的代码不正确,可以不用看了)

另外,你也可以使用 /dev/urandom,但 macOS 上可能没有这个设备文件。如果你更倾向于使用更标准的 Unix 工具,并且你的 macOS 系统上安装了 openssl,你可以使用以下命令来生成随机的大写字母:

bash复制代码

#!/bin/bash  



# 使用openssl生成随机的十六进制数字,然后通过xxd转换为大写字母  

random_chars=$(openssl rand -hex 2 | xxd -r -p | tr '\000-\377' 'A-Z')



# 打印前两个字符(因为我们生成了更多的随机字符)  

echo "${random_chars:0:2}"

这个脚本使用 openssl rand -hex 2 生成两个随机的十六进制数字,然后通过 xxd -r -p 将其转换为原始字节,最后使用 tr 命令将这些字节映射到大写字母范围内。注意,这种方法生成的可能是两个以上的字符,因此我们只取前两个字符。

请确保根据你的具体需求和环境选择最适合的方法。如果你只是需要两个大写字母,第一个使用 $RANDOM 的方法可能更简单且足够使用。


普通分类: