Bash
是否可以通過命令替換生成多個完整的命令?
有許多命令可以接受多個參數,
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 新使用者,該範例僅用於展示目的。我不是想創建一堆組。
有幾種方法可以做到這一點。最簡單和最明顯的一種是使用
for
循環。例如:for g in {1..3}; do groupadd "g$g" ...other groupadd args here... ; done
注意:與您的
touch
,ls
和rm
範例(使用多個參數執行命令一次,擴展file{1..3}
)不同,它執行3groupadd
次,"g$g"
每次使用一個參數。
我找到了一種比
for
循環短的方法。eval "groupadd g"{1..3}";"