我知道我可以seq用来生成一个随机的数字列表:1, 2, 3, 4 ...
我想把这些数字变成一个随机的顺序,比如 3、1、4、2……
我知道我可以shuf用来打乱文件的行。所以我可以seq用来将随机数写入一个文件,然后用来shuf对它们进行混洗——或者编写某种混洗函数。但这似乎不必要地复杂。有没有更简单的方法来使用单个命令随机化数组中的项目?
这个问题是关于在一个范围内生成随机数,这很好,但不适合我的情况。
\n我将用 SQL 术语进行解释,因为在我看来,这更容易理解,尽管问题是关于bash. 我的想法是用代码的结果bash构建一个SQL脚本。
我有两张 MySQL 表,一张是people,一张是places。每条记录都有一个唯一的整数 ID,范围为 1 到 139(地点)和 1 到 1519(人)。它们通过外键相互联系,意思是:一个地方可以有很多人,但一个人只能有一个地方。
\n# 1-139 # 1-1519\nplace1 \xe2\x86\x92 person1\n \xe2\x86\x92 person2\n \xe2\x86\x92 person3\n ... and so on\nRun Code Online (Sandbox Code Playgroud)\n我现在掌握的数据是,在一个地方所有的人都有联系,而其他地方没有任何联系。
\n名额有139个,人数有1519人,所以我有1个名额,有1519人。
\n我的目标是将人员随机分配到各个地方,并且每个地方至少有一个人。
\n到目前为止我的代码是这样的:
\n$ c=1519\n$ while [[ $c -ne 0 ]]; do \n x=$((shuf -i 1-139 -n 1))\n [[ $x -gt 139 ]] && continue\n echo $x\n (( c-- ))\n done\nRun Code Online (Sandbox Code Playgroud)\n此代码生成 1-139 之间的 …
我需要一个命令行脚本,它会生成一个 1 到 6 之间的随机整数。我使用 Ubuntu 和 bash。
几个月前我正在使用“bc”来解决这个问题,但从来没有让它完全工作。从那以后我就忘记我去了哪里。
我正在使用它来更改 crontab 脚本,以便它不会总是每 15 分钟运行一次,而是随机运行一次(15+-3 分钟)。IE。将 crontab 更改为每 12 分钟一次,然后在运行脚本之前在脚本中休眠 1-6 分钟(这基本上是一个用于检查网页状态的 wget)。
如果我有类似的东西:
echo 1 2 3 4 5 6
Run Code Online (Sandbox Code Playgroud)
或者
echo man woman child
Run Code Online (Sandbox Code Playgroud)
我必须在管子后面放什么才能挑出1 2 3 4 5 6或 的一个元素man woman child?
echo 1 2 3 4 5 6 | command
3
Run Code Online (Sandbox Code Playgroud)