我正在运行一些测试,并且我需要使用一些输入的组合来运行一个粒子shell脚本。
假设我有一个带有3个参数的脚本test.sh:A、B、C。
A可以是1或2,B可以是"aa“或"bb”,C可以是7或8
我想自动启动所有可能的组合,因此
./test 1 "aa" 7
./test 1 "aa" 8
./test 1 "bb" 7
./test 1 "bb" 8
./test 2 "aa" 7
./test 2 "aa" 8
./test 2 "bb" 7
./test 2 "bb" 8有什么东西已经准备好并测试过了吗?
编辑:置换->组合
发布于 2016-01-30 02:13:11
外壳支撑扩展的一种有点难看的(Ab)使用允许这样做:
$ for i in {1,2}\ {aa,bb}\ {7,8}; do
echo {$i}
done
{1 aa 7}
{1 aa 8}
{1 bb 7}
{1 bb 8}
{2 aa 7}
{2 aa 8}
{2 bb 7}
{2 bb 8}但是,只有当单个值不包含空格或/glob元字符时,这才有效。
如果它们可以包含其中任何一个,那么这是不安全的,应该避免。
发布于 2016-01-30 01:35:44
你可以使用3 for循环:
for x in 1 2; do
for y in "aa" "bb"; do
for z in 7 8; do
./test $x $y $z
done
done
done测试运行:
1 2中x的$;" aa“”bb“中的do >y;7 8中的do >z;do > echo $x $y $z >done;done 1 aa 7 1 aa 8 1 bb 7 1 bb 8 2 aa 7 2 aa 8 2 bb 7
现在可能有一种方法可以将它们压缩到一个for循环中,如果这是你的愿望,你可能想要等待另一个答案。
https://stackoverflow.com/questions/35090562
复制相似问题