programing

PowerShell의 확장 가능한 문자열에서 $($variableName)는 무엇을 의미합니까?

magicmemo 2023. 8. 24. 21:56
반응형

PowerShell의 확장 가능한 문자열에서 $($variableName)는 무엇을 의미합니까?

온라인에서 이것을 사용하는 예제 스크립트를 많이 보았습니다.가장 최근에 TFS 자동화에 대한 스크립트에서 이를 보았습니다.

[string] $fields = "Title=$($taskTitle);Description=$($taskTitle);Assigned To=$($assignee);"
$fields += "Area Path=$($areaPath);Iteration Path=$($iterationPath);Discipline=$($taskDisciplineArray[$i]);Priority=$($i+1);"
$fields += "Estimate=$($taskEstimateArray[$i]);Remaining Work=$($taskRemainingArray[$i]);Completed Work=$($tasktaskCompletedArray[$i])"

제가 봤을 때는$($taskTitle)와 동등한 것으로 보입니다.$taskTitle.내가 뭘 빼놓았나요?괄호와 여분의 달러 표시를 사용해야 하는 이유가 있습니까?

구문은 구문 내부의 식을 평가하는 데 도움이 됩니다.

$arr = @(1,2,3)

$msg1 = "$arr.length"
echo $msg1 # prints 1 2 3.length - .length was treated as part of the string

$msg2 = "$($arr.length)"
echo $msg2 # prints 3

자세한 내용은 http://ss64.com/ps/syntax-operators.html 에서 확인하실 수 있습니다.

Amith George의 유용한 답변을 배경 정보로 보완하기 위해:

제가 봤을 때는$($taskTitle)와 동등한 것으로 보입니다.$taskTitle.

맥락에서 확장 가능한 문자열(삽입 문자열)은 다음과 같습니다.

  • 또는 다음과 같은 단순 변수 참조는 필요하지 않습니다.

    • 때로는 양식을 사용해야 합니다(또는 선택할 수도 있습니다).${taskTitle}또는${env:HOME}즉,{...}식별자 주위 - 문자열의 후속 문자로부터 변수 이름을 명확하게 구분합니다.
  • 밖에 필요한 것은 무엇이든 있습니다.

    • 속성 액세스. 예:
      "count is: $($var.Count)"
    • 포함; 예:
      "path prefix: $($var + '/')"
    • 전체 명령 포함(여러 명령 포함), 예:
      "file names: $(Get-ChildItem *.txt | Select-Object -ExpandProperty Name)"

간단히 말해서:

  • $(...)내부"...단순 변수 참조 이외의 모든 항목에 필요하며 전체 을 내부에 포함할 수 있습니다."..."평소처럼, 문자열이 평가될 때,$(...)부품이 포함된 문의 (문자열화된) 출력으로 대체되었습니다.

  • 만약 당신이 언제를 생각하고 싶지 않다면.$(...)필요한 경우와 필요하지 않은 경우 항상 사용하도록 할 수 있습니다(예:$($taskTitle)), 그러나 입력 및 시각적 "인식"은 번거롭다는 점에 유의하십시오.

    • 주의: 의 동작이 /의 동작과 동일하지 않은 에지 사례가 있습니다. 즉, if$var는 컬렉션입니다(다운로드).[System.Collections.IEnumerable]) 항목이 하나만 포함되어 있습니다. 아래 PetSerAl의 설명을 참조하십시오.
  • 참조된 변수의 /medbedded 문 값이 이미 문자열이 아닌 경우 를 사용하여 문자열화됩니다.문화에 민감한 문자열화를 지원하는 유형이 불변 문화로 문자열화되는 주목할 만한 반전과 함께 NET 방법은 느슨하게 말하면 미국-영어 형식과 같습니다. 예를 들어,"$(1.2)" 항상 수확량1.2▁where도서 에서도.,는 소수점 표시입니다. 자세한 내용은 이 답변을 참조하십시오.

설명서:

공식 이름은 에서 (간단히) 문서화된 대로 하위 표현 연산자이지만, 확장 가능한 문자열의 맥락에서 연산자의 특정 사용에 대한 설명은 없습니다.

반대로, 확장 가능한 문자열을 포함한 문자열 리터럴에 대해 논의하는 는 다음의 예를 보여줍니다.$(...)확장 가능한 문자열의 컨텍스트에서만 사용합니다.

언급URL : https://stackoverflow.com/questions/13615676/what-does-variablename-mean-in-expandable-strings-in-powershell

반응형