bash - 如何将文本文件中的随机行分配给变量?
问题描述
我的代码有问题。
为了让我的程序正常工作,我需要提供一个带有多个网页链接(YouTube 链接)的变量,因为它是一个音乐播放器。问题是我必须将链接添加到代码的方式非常不干净:
# This is the variable to which I have to add the values in the form of links
items=(
"https://www.youtube.com/watch?v=YnmEePUXLRs"
"https://www.youtube.com/watch?v=3vVSBLkpO-8"
"https://www.youtube.com/watch?v=iPKJUzkTt6Y"
)
# Variable "Size", i use "size" to I use this variable to count the number of links
# there are
size=${#items[@]}
randomindex=$(($RANDOM % $size))
mpv ${items[$randomindex]}
我想要的是能够从文本文件中提取所有链接,并且代码可以直接从文件中读取它们。
问题是,正如您所看到的,size
我使用它来计算它拥有的链接数,因此使用该变量randomindex
能够创建一个随机数"${items[$randomindex]}"
,我不确定如果我提取它们它是否仍然可以工作从文本文件。
我怎样才能做到这一点?
更新 我使用“if”来命名歌曲名称:
mpv $(shuf -n1 .MRIndie_links)
CANCION=$(shuf -n1 .MRIndie_links)
if [ "$CANCION" == "https://www.youtube.com/watch?v=YnmEePUXLRs" ]
then
echo
echo -e "\e[91m------------------------------------------------------"
echo -e "\e[1mThis was: The Less i Know the Better - Tame Impala" | lolcat
echo -e "\e[91m------------------------------------------------------"
echo
fi
但它不起作用......为什么?
解决方案
您可以shuf
为此使用命令:
$ cat links
https://www.youtube.com/watch?v=YnmEePUXLRs
https://www.youtube.com/watch?v=3vVSBLkpO-8
https://www.youtube.com/watch?v=iPKJUzkTt6Y
$ shuf -n1 links
https://www.youtube.com/watch?v=iPKJUzkTt6Y
在你的脚本中,你会像这样使用它
mpv "$(shuf -n1 links)"
推荐阅读
- javascript - 使用 vue.js 提高表列上悬停效果的反应性/性能
- javascript - 如果 data-attribut 等于 0,“parents().filter”返回未定义
- python - 具有许多值的 Python Dash 下拉列表
- cmd - 卸载 anaconda 后 Cmd 崩溃,退出代码为 1
- python-3.x - 为什么通过 boto 将文件上传到 s3 会受到限制?我怎样才能让它更快?
- javascript - 如何构造循环以检查嵌套数组中是否不存在对象值
- javascript - 在玩笑测试中忽略某些导入函数的最佳方法
- python - Big Sur 上的 2019 Macbook Pro + 最新版 Spyder 上的 Pandas 导入错误
- python - 如何删除Python列表最后一个元素中的字符?
- amazon-web-services - Terraform 中 for_each 循环的动态输出