我想在命令行程序中添加一堆目录,其中每个目录都提供给命令行选项:
% cmd -I dir1 -I dir2 -I dir3 -I dir4 -I dir5
假设我可以将目录表示为通配符,有没有办法在单个命令中将其与“-I”交错?例如,在Ruby中我可以这样做:
system ["cmd", *Dir["dir*"].collect {|d| ["-I", d]}.flatten(1) ];
或者,在Perl中更简洁:
system "cmd", map {("-I", $_)} <dir*>;
答案 0 :(得分:4)
如果目录名不包含空格,则可以使用参数替换
dirs=(dir*)
cmd ${dirs[@]/#/-I }
/#
表示“在开头替换”。
如果不需要-I
之后的空格,可以使用大括号扩展(使用包含空格的dirnames):
cmd -I'dir'{1..5}
这适用于使用等号的长选项:
cmd --capital-i=dir{1..5}
答案 1 :(得分:0)
你可以使用
for i in dir{1..4};do value=$value" -I $i"; done;cmd $value