有许多命令接受多个参数,例如touch
、ls
和rm
。这样我就可以使用该构造{1..3}
为命令生成多个参数。例如:
[root@192 ~]# touch file{1..3}
[root@192 ~]# ls file{1..3}
file1 file2 file3
[root@192 ~]# rm -f file{1..3}
[root@192 ~]#
有些命令不支持多个参数,例如groupadd
.因此以下命令会产生错误:
[root@192 ~]# groupadd g{1..3}
Usage: groupadd [options] GROUP
...
[root@192 ~]#
是否可以生成多个完整的命令,例如groupadd g1; groupadd g2; groupadd g3;
?我尝试了以下命令,但失败了:
[root@192 ~]# `"groupadd g"{1..3}`
bash: groupadd g1: command not found...
[root@192 ~]#
顺便说一句,我是 Bash 新用户,该示例仅用于演示目的。我并不是想创建一堆团体。
答案1
做这件事有很多种方法。最简单和最明显的方法之一是使用for
循环。例如:
for g in {1..3}; do groupadd "g$g" ...other groupadd args here... ; done
注意:与您的touch
、ls
和rm
示例(使用多个参数运行一次命令,即 的扩展file{1..3}
)不同,它运行groupadd
三次,"g$g"
每次使用一个参数。
答案2
我找到了一种比循环更短的方法for
。
eval "groupadd g"{1..3}";"