Linux Shell 生成随机数和随机字符串的方法示例

yizhihongxing

下面我将详细讲解一下关于“Linux Shell 生成随机数和随机字符串的方法”的完整攻略。

生成随机数

有时我们需要生成随机数,可以使用 Shell 内置的 $RANDOM 变量。它可以返回一个介于0~32767之间的随机数。

下面是一个 $RANDOM 的示例:

#!/bin/bash
for i in {1..10}
do
    echo "第 $i 个随机数: $RANDOM"
done

以上脚本可以打印10个随机数。

生成随机字符串

我们也可以通过 Shell 来生成随机字符串。以下是3种方法:

方法1:用 /dev/urandom 和 tr 命令

/dev/urandom 是一个Linux下生成随机数的接口,我们可以通过它来产生随机字符串。

#!/bin/bash
head /dev/urandom | tr -dc A-Za-z0-9 | head -c 20 ; echo ''

其中:

  • head /dev/urandom 产生无限随机字符流
  • tr -dc A-Za-z0-9 对字符流进行过滤,剔除非字母和数字字符
  • head -c 20 输出20个字符
  • echo '' 跳行输出,否则输出在同一行。

方法2:用日期和散列函数

#!/bin/bash
date +%s%N | md5sum | head -c 20 ; echo ''

其中:

  • date +%s%N 输出从1970年1月1日至今的纳秒数时间戳
  • md5sum 优秀的散列函数,将产生相同输入时必定产生相同输出,相同输出对应相同输入
  • head -c 20 输出所有md5字符串的前20位

方法3:用 UUID

UUID 是一个128位的唯一标识符,它在 Linux 中是可以随时使用的。

#!/bin/bash
cat /proc/sys/kernel/random/uuid |  cut -d '-' -f 1 | tr -d '\n' ; echo ''

其中:

  • cat /proc/sys/kernel/random/uuid 产生唯一标识符
  • cut -d '-' -f 1 取出第一部分
  • tr -d '\n' 去掉所有换行符

以上三种方法都可以在 Bash Shell 中用来产生随机字符串。

希望这篇攻略能帮到你。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux Shell 生成随机数和随机字符串的方法示例 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • wamp 安装redis扩展

    phpredis扩展下载地址  http://windows.php.net/downloads/pecl/snaps/redis/ 1.选择redis DLL文件扩展 phpinfo 查看VC版本 还有系统位数 再进行下载  所以选择上面这个 选择ts就行     2. 将下载好的php_redis.dll放入E:\wamp64\bin\php\php5.…

    Redis 2023年4月11日
    00
  • 如何使用Python在MySQL中使用唯一键?

    在MySQL中,唯一键是一种用于确保表中每一行的唯一性的特殊列。在Python中,可以使用MySQL连接来执行唯一键查询。以下是在Python中唯一键的完整攻略,包唯一键基本语法、使用唯一键的示例及如何在Python中使用唯一键。 唯一键的基本语法 在MySQL中可以使用UNIQUE关键字来指定唯一键列。以下是创建唯一键列的本语法: CREATE TABLE…

    python 2023年5月12日
    00
  • mysql5.7.18字符集配置

      故事背景:   很久很久以前(2017.6.5,文章有其时效性,特别是使用的工具更新换代频发,请记住这个时间,若已经没有价值,一切以工具官方文档为准),下了个mysql版本玩玩,刚好最新是mysql5.7.18,本机是win10、64位系统。大抵步骤分为:   1、下载:以官网(https://www.mysql.com)为准,download响应系统版…

    MySQL 2023年4月13日
    00
  • SQL Server数据迁移至PostgreSQL出错的解释以及解决方案

    问题解释 在将SQL Server数据迁移到PostgreSQL的过程中,可能会出现以下错误: ERROR: null value in column “xxxx” violates not-null constraint ERROR: relation “xxxx” does not exist ERROR: invalid input syntax fo…

    database 2023年5月21日
    00
  • 史上最全的MySQL备份方法

    下面是对于“史上最全的MySQL备份方法”的详细讲解。 一、为什么需要备份MySQL数据库 MySQL是一种关系型数据库,是很多网站的核心数据存储方式,因此它的安全性和完整性至关重要。如果没有合适的备份措施,一旦数据库遭受到破坏或误删除,将会造成大量重要数据的丢失。 二、备份MySQL数据库的目的 备份MySQL数据库目的在于,将数据库数据储存到其他位置,以…

    database 2023年5月22日
    00
  • PL/SQL实现Oracle数据库任务调度

    PL/SQL实现Oracle数据库任务调度完整攻略 在Oracle数据库中,可以使用PL/SQL实现任务调度。本文将提供一些实践经验和示例,以帮助你轻松地学会如何使用PL/SQL实现Oracle数据库任务调度。 第一步:创建一个作业 要使用PL/SQL实现Oracle数据库任务调度,我们需要先创建一个作业。作业是用于调度任务的对象。以下是一个创建作业的例子:…

    database 2023年5月21日
    00
  • 一文分析SQL Server中事务使用的锁

    下面是详细讲解“一文分析SQL Server中事务使用的锁”的完整攻略。 1. 什么是事务? 在数据库中,一个事务指的是一组数据库操作(比如插入、更新、删除等),这些操作要么全部执行,要么全部不执行。如果有任何一个操作失败,则整个事务就会回滚(撤销)。事务可以确保数据库的完整性,并且可以为多个用户提供并发性。 2. SQL Server 中的锁机制 SQL …

    database 2023年5月21日
    00
  • linux下mysql的root密码忘记的解决方法

    下面给出一个详细的Linux下MySQL的root密码忘记的解决方法攻略,具体步骤如下。 步骤1:关闭MySQL服务 在终端中输入以下命令关闭MySQL服务: $ sudo systemctl stop mysql 步骤2:使用mysqld_safe命令启动MySQL 在终端中输入以下命令使用mysqld_safe命令启动MySQL,并跳过权限验证: $ s…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部