【问题标题】:how to display 3 random pictures out of 8 using bash如何使用bash显示8张随机图片中的3张
【发布时间】:2018-05-18 20:01:36
【问题描述】:

我在一个目录中有 8 个图像。

路径是/blabla.com/img.

我需要访问此路径并从 8 个中随机选择 3 个并显示它们。

If 3 pics are the same,应该是echo "yeeey"

Otherwise"neeey" 并将这些响应记录在文本文件中。

【问题讨论】:

  • 你的 8 张图片都不同吗?
  • 只有 3 个是相同的,因此很难连续获得 3 个。
  • 看起来像是一道作业题
  • 数组中的文件名并查看带有RANDOM % 8的循环。您可以循环直到获得 3 个单独的文件名(数组索引)。
  • 我必须同意 sharuzzan:这是一个可疑的问题。更像是家庭作业。

标签: bash random echo


【解决方案1】:

我不会为你做作业! 不过我可以给你一些见解:

  • 将 8 个文件名存储在一个数组中
  • 调用$RANDOM % 8 3 次并将值存储在 3 个索引变量中
  • 使用 3 个索引变量提取 3 个文件
  • 使用 sha256sumsha512summd5sum 计算图像的签名并将结果存储在 3 个变量中
  • 比较三个变量的值是否相同echo "yeeey"否则echo "neeey"
  • 如果除此之外你想显示你帖子中写的图片,你可以调用eog或其他类似的工具,以finename作为参数,当然在后台,在末尾加上&命令调用。

祝你任务顺利,如果你需要帮助,请告诉我!

【讨论】:

  • 非常感谢您的帮助!
【解决方案2】:

让我们排列一个不同元素的数组(例如 8 个):

array=({A..H})

(1) 使用RANDOM特殊变量取模元素个数得到一个介于0和number-1之间的随机数

number=$((RANDOM%${#array[@]}))

第一个随机元素是

first=${array[number]}

从数组中移除元素并重新分配数组以无间隙地重新索引(declare -p array 看)

unset array[number]
array=("${array[@]}")

从 (1) 重新开始

【讨论】:

  • 嗨...谢谢
  • 如果我使用 for 循环,并且 N=3,它会是这样的吗? for((i=0;i
猜你喜欢
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-22
  • 2013-06-11
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
相关资源
最近更新 更多