我想将参数从循环传递到函数func
中。为简单起见,假设我们正在使用循环
for x in {1..5}
do
for y in {a..c}
do
echo $x$y
done
done
我只是在附和,因为我不知道该怎么做。我想运行相当于func 1a 1b 1c 2a 2b 2c 3a 3b 3c 4a 4b 4c 5a 5b 5c
.
我该怎么做呢?
我想将参数从循环传递到函数func
中。为简单起见,假设我们正在使用循环
for x in {1..5}
do
for y in {a..c}
do
echo $x$y
done
done
我只是在附和,因为我不知道该怎么做。我想运行相当于func 1a 1b 1c 2a 2b 2c 3a 3b 3c 4a 4b 4c 5a 5b 5c
.
我该怎么做呢?
func {1..5}
将等同于func 1 2 3 4 5
。一般而言,for语句中的单词列表就像命令中的任何单词列表一样,因此您可以将循环替换为命令的单个调用,将您在其中使用的任何列表移至命令参数。
此外,您可以一起使用多个大括号扩展:
{1..5}{a..c}
将创建列表1a 1b 1c 2a 2b 2c 3a 3b 3c 4a 4b 4c 5a 5b 5c
(作为不同的单词),因此在您展示的情况下,func {1..5}{a..c}
应该可以工作。如果你的循环做了一些更复杂的事情来创建最终命令的参数,你可以使用一个数组来收集它们(在 Bash/ksh/zsh 中)。假设我们必须
generate_arg
运行它来生成以下参数func
:(使用数组比将值连接到字符串更好,因为它使带有空格的值保持不变。)