是否可以通过命令替换生成多个完整的命令?

是否可以通过命令替换生成多个完整的命令?

有许多命令接受多个参数,例如touchlsrm。这样我就可以使用该构造{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

注意:与您的touchlsrm示例(使用多个参数运行一次命令,即 的扩展file{1..3})不同,它运行groupadd三次,"g$g"每次使用一个参数。

答案2

我找到了一种比循环更短的方法for

eval "groupadd g"{1..3}";"

相关内容