Arrays Powershell相当于Bash大括号扩展,用于生成列表/数组
编写Bash脚本时,可以使用它快速生成列表: 在Powershell中生成类似列表的最简单方法是什么?我可以用。。或者,运算符为,但如何使用静态字符串文字作为项的前缀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
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对象
就不那么冗长了。