![Shuf 命令的管道输出](https://linux22.com/image/163315/Shuf%20%E5%91%BD%E4%BB%A4%E7%9A%84%E7%AE%A1%E9%81%93%E8%BE%93%E5%87%BA%20.png)
对 Linux 相当陌生。我有一个由 Raspberry Pi 运行的数码时钟。我想经常向其发送六位数字的随机序列,以帮助延长数码管的使用寿命。
我在 GitHub 上找到了一个 CLITool 程序,它可以让我使用命令显示任意六位数字CLITool xxxxxx
,其中 x 是 0-9 的任意数字。所以我尝试使用以下行创建一个 bash 文件 shuf -zer -n6 {0..9}|CLITool
。
该shuf
命令生成一个随机的六位数字字符串,但它似乎没有通过管道传输到 CLITool。就像我提到的,对于 Linux 来说相当新,所以它可能是我缺少的一些基本东西。
答案1
您想使用命令替换。
CLITool $(expr 1+2)
将首先expr
使用参数 运行程序1+2
。这将输出3
.然后外壳就会运行CLITool 3
。
我会使用 awk 来获取数字,例如
CLItool $(awk 'BEGIN{srand();printf("%06d\n",rand()*1000000)}')
获取 0 到 1,000,000-1 之间带前导 0 的 6 位随机数。
答案2
听起来您的 CLI 工具根本不读取来自 stdin 的输入。只有可以读取输入流的工具才能通过管道传输。因此只需使用命令替换即可:
CLItool $(shuf -zer -n6 {0..9})