답변:
다음 명령을 사용하십시오.
0..9 | foreach $_{ New-Item -ItemType directory -Name $("ch" + $_) }
작동 방식 :
0..9
범위 연산자 ..
, ... 9 숫자 0, 1의 순서를 생성|
됩니다.foreach
루프 (각 번호를 차례로){ ... }
A는 스크립트 블록은New-Item -ItemType directory -Name $("ch" + $_)
디렉토리를 만듭니다$_
인 자동 변수 파이프 라인에서 현재 오브젝트 (값)을 나타낸다예:
> 0..9 | foreach $_{ New-Item -ItemType directory -Name $("ch" + $_) }
Directory: F:\test
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 25/09/2016 14:57 ch0
d----- 25/09/2016 14:57 ch1
d----- 25/09/2016 14:57 ch2
d----- 25/09/2016 14:57 ch3
d----- 25/09/2016 14:57 ch4
d----- 25/09/2016 14:57 ch5
d----- 25/09/2016 14:57 ch6
d----- 25/09/2016 14:57 ch7
d----- 25/09/2016 14:57 ch8
d----- 25/09/2016 14:57 ch9
1..9 | % $_{ mv ch$_*.* ch$_ }
: ^ D
git add
하고 반환하는 것을 볼 - 명심를하는 $_
foreach는이 의미 마지막 파이프 라인 항목의 개별 배열 항목 (이다 안에 commit
당신의 예제의 단계 그렇게 추가, 원시 번호를받지 않습니다 ch
다시를 아마 잘못 ). 또한 귀하의 예에서 모든 추가가 완료된 후에 만 커밋이 실행됩니까 (?), 이는 첫 번째 커밋이 모든 것을 얻음을 의미합니다 ... 또는 ;
단일 foreach 단계 내에서 여러 명령문 (으로 구분 )을 사용할 수 있습니다 .
New-Item
경로 배열을 사용할 수 있으므로 mkdir을 여러 번 호출 할 필요가 없습니다 . 예를 들면 다음과 같습니다.
mkdir $(1..9 | %{"ch$_"})
@DavidPostill은 그의 답변 에서 대부분의 개념을 설명했다 . 또한 명시적인 연결을 수행하는 대신 문자열 보간을 활용 합니다 . 또한 %
속기는 대신에 사용 ForEach-Object
되지만 의미는 같습니다.
불행히도 bash에서와 같이 문자열을 문자열 배열에 보간하는 쉬운 방법은 없습니다.
md(0..9|%{"ch$_"})
md
은에 대한 표준 별칭이며 mkdir
PowerShell 함수입니다. %
Bob이 언급했듯이의 표준 별칭은 ForEach-Object
입니다. 큰 따옴표로 묶인 문자열 "ch$_"
은 변수를 보간하므로 와 같습니다 'ch' + $_
. 당신은 실행하여 별칭을 찾아 볼 수 있습니다 Get-Command
( gcm
그것을).
1..9 | %{"ch$_"} | %{git add "$_"; git commit -m "$_"}
또는 1..9 | %{$name = "ch$_"; git add "$name"; git commit -m "$name"}
. 댓글이 조금 길어 지므로 추가 질문이있는 경우 질문으로 문의하거나 채팅에 참여하세요.
기억하기 쉽고 많은 상황에 적용될 수 있으므로 for 루프 버전을 사용합니다. 여러 명령에도 사용할 수 있습니다.
이 bash 명령과 동등합니다.
{1..9}에서 i의 경우; 어떻게
내가 MKDIR 채널 $
수행을
... PowerShell 사용시 :
for($i=1;
$i -le 10;
$i++)
{md ch$i}
Missing opening '(' after keyword 'for'.
:이 명령을 foreach ($i in 1..9) {md ch$i}
저 디렉토리 apter "채널"을 번호를 얻을 수 있지만, 나는 당신의 "를 이해하지 않습니다. ..; do ... done "루프.
for($i=1; $i -le 10; $i++){md ch$i}
고맙습니다 mamun,하지만 아직 "Bourne again ...";) (C ++도 모르지만 "$ i-le"(작거나 같지 않은 경우)을 이해한다고 생각합니다.) "$ i ++"(~ "i + = 1"?) 의미하고 명령을 수행하고 있습니다 ...
현재 디렉토리 아래에 여러 디렉토리를 작성하십시오.
mkdir ('abc','def','jkl')
위는 다음의 간단한 버전입니다. 문자열 배열 앞에 포함 된 at 기호와 명명 된 매개 변수 사용에 주목하십시오.
mkdir -Path @('abc','def','jkl')
그리고 모든 길을 가고 싶다면 완전한 기본 명령은 다음과 같습니다.
New-Item -Path @('abc','def','jkl') -ItemType Directory
PowerShell 명령 줄을 사용할 때는 짧은 버전을 사용합니다.
스크립트를 작성할 때 (특히 PowerShell을 처음 접할 수있는) 다른 스크립트를 작성할 때 전체 기본 명령을 작성하는 경향이 있습니다.
가장 적합한 것을 선택하십시오.
1..9 | % $_{ md -name $("ch" + $_) }
.