繁体   English   中英

在循环使用bash中不相关的数字范围时使用文件中的行

[英]Using lines from a file while looping over an unrelated numeric range in bash

我有一个任务来显示表格中的所有bash字体/颜色/背景色,其中每个变体的文本都不同,并且从包含448个字/随机数的文件中提取(我正在处理数字)。 这是我的代码,用于显示所有变化

for i in {0..8}; do 
for j in {30..37}; do 
for n in {40..47}; do 
echo -ne "\e[$i;$j;$n""mcolors"
done
echo
done
done
echo "" 

输出: 在此处输入图像描述

生成随机数的代码:

#!/bin/bash 
for ((i=0;i<$1;i++))
do
echo $RANDOM >> randomnumbers.sh
done

所以问题是如何将数字从randomnumbers.sh传递到脚本,以便输出中的“颜色”行更改为从randomnumbers.sh按顺序获取的数字? 谢谢!

一种简单的方法是使用随机数创建一个打开的文件描述符,并在需要该值时从该文件中读取一行。

在这里,我们使用的是FD 3,因此脚本的其他部分仍然可以从原始的stdin中读取:

#!/usr/bin/env bash

# Make file descriptor 3 point to our file of random numbers (don't use .sh for data files)
exec 3< randomnumbers || exit

for i in {0..8}; do 
  for j in {30..37}; do 
    for n in {40..47}; do
      read -r randomNumber <&3                                 # read one number from FD 3
      printf '\e[%s;%s;%sm%05d' "$i" "$j" "$n" "$randomNumber" # & use in the format string
    done
    printf '\n'
  done
done
printf '\n'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM