Arrays Powershell相当于Bash大括号扩展,用于生成列表/数组

Arrays Powershell相当于Bash大括号扩展,用于生成列表/数组,arrays,powershell,brace-expansion,Arrays,Powershell,Brace Expansion,编写Bash脚本时,可以使用它快速生成列表: 在Powershell中生成类似列表的最简单方法是什么?我可以用。。或者,运算符为,但如何使用静态字符串文字作为项的前缀 PS C:\Users\gb> 1..5 1 2 3 4 5 PS C:\Users\gb> "test"+1..5 test1 2 3 4 5 PS C:\Users\gb> "test","dev","prod" test dev prod PS C:\Users\gb> "asdf"+"tes

编写Bash脚本时,可以使用它快速生成列表:

在Powershell中生成类似列表的最简单方法是什么?我可以用。。或者,运算符为,但如何使用静态字符串文字作为项的前缀

PS C:\Users\gb> 1..5
1
2
3
4
5

PS C:\Users\gb> "test"+1..5
test1 2 3 4 5

PS C:\Users\gb> "test","dev","prod"
test
dev
prod

PS C:\Users\gb> "asdf"+"test","dev","prod"
asdftest dev prod

我希望在这里被证明是错误的,但我不相信有一种方法可以完全像使用bash一样,或者只需要很少的按键

您可以通过管道将列表传递给
foreach对象
来迭代列表,以获得相同的结果

1..5 | foreach对象{“test”+$}

或使用速记:

1..5 |%{“test$|”}

在这两种情况下(
%
是每个对象的别名),输出为:

test1
test2
test3
test4
test5
注意:如果要将其构建到用于发布/分发/重用的脚本中,请使用更详细的
foreach对象
,而不是简写的
%
——以提高可读性

PS C:\> "test","dev","prod" | % { "server-$_" }
server-test
server-dev
server-prod
PS C:\> 1..5 | % { "server{0:D2}" -f $_ }
server01
server02
server03
server04
server05
PS C:\> 1..5 | % { "192.168.0.$_" }
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5

请注意,
%
ForEach对象
cmdlet的别名。

我有一种方法可以使用。结尾的“000”是一个特殊的格式代码。它总是填充到正确数量的零。如果你真的想简洁和神秘,你也可以使用通配符和方法名,比如t*g

1..10 | % tostring computer000

computer001
computer002
computer003
computer004
computer005
computer006
computer007
computer008
computer009
computer010


1..10 | % t*g 192\.168\.1\.0

192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.6
192.168.1.7
192.168.1.8
192.168.1.9
192.168.1.10
“x”也是十六进制打印的格式代码

10..15 | % tostring x

a
b
c
d
e
f
始终存在-replace,它也适用于阵列。“^”是“行的开头”的正则表达式。将“$”改为“行尾”

(echo test dev prod) -replace '^','server-'

server-test
server-dev
server-prod
哈,我以前从没试过

(echo test dev prod) -replace (echo ^ server-)

server-test
server-dev
server-prod

也许他们可以在powershell 8中进行大括号扩展…

1..5 |%{“test$\uu”}
甚至更短。正确,您正在编辑我的代码。我真的需要打破这种连接的习惯。是的,我曾想过只为每一个使用,但它有点太冗长了
1..5 |%{“server{0:00}”-f${/code>足够短,除非有人能想出更好的解决方案,否则我可能会使用它。谢谢
foreach($x in$y){stuff}
确实会变得冗长,但对于某些事情来说,这是一种方式(在这里是有效的)。在这种情况下,带有管道的
foreach对象
就不那么冗长了。