bash中的一行while循环创建变量列表

时间:2017-02-05 04:26:35

标签: bash shell loops while-loop scripting

我正在尝试编写1行while循环,创建一个文件名字符串,如list =“temp0.txt temp1.txt temp2.​​txt ...”等。我希望它是一个随机数的文件在0到50之间,这就是我到目前为止所做的。

argumentCount=$RANDOM
let "argumentCount %= 50"
i=0
list=""
while [ $i -lt $argumentCount ]; do; touch temp[$i].txt; $list="$list temp[$i].txt; ((i=i+1)); done
countLines $list > output.txt

我试图声明0到50之间的随机数,然后使用while循环我想创建与此随机数相同数量的文件。我想创建一个字符串,其中包含所有文件名依次列出。然后将该字符串传递给 countLines,这是一个接受任意数量文件名作为参数的程序。

我将这组命令存储在一个不同的文件中,我在这个文件的每一行都使用了eval,但它给了我一个语法错误。我有什么办法可以让它发挥作用吗? 感谢

1 个答案:

答案 0 :(得分:0)

这将打印一个包含文件名的行:

eval echo temp{1..$((RANDOM%50))}.txt

这将触及文件列表:

eval touch temp{1..$((RANDOM%50))}.txt

这个脚本将完成你所做的所有事情:

#!/bin/bash

list=$( eval echo '"temp["{1..'$((RANDOM%50))'}"].txt"' )

touch $list

countLines "$list" > output.txt