Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

PowerShell의 변수

컴퓨터 과학(및 일반 컴퓨팅)에서 변수는 나중에 사용할 수 있도록 임의의 정보를 보유하는 메모리의 위치입니다. 즉, 데이터를 넣고 빼는 임시 저장 컨테이너입니다. Bash 셸에서 해당 데이터는 단어(문자열 , 컴퓨터 용어) 또는 숫자(정수 ).

이전에 컴퓨터에서 변수를 (고의로) 사용한 적이 없을 수도 있지만 아마도 인생의 다른 영역에서 변수를 사용했을 것입니다. "give me that" 또는 "look at this"와 같은 말은 문법적 변수를 사용하는 것입니다(이를 대명사 ). "이것"과 "저것"의 의미는 여러분이 머릿속에 무엇을 상상하고 있는지, 또는 청중이 무엇을 말하는지 알 수 있는 지표로 무엇을 가리키고 있는지에 따라 다릅니다. 수학을 할 때 변수라고 부르지 않더라도 변수를 사용하여 알 수 없는 값을 대신합니다.

이 문서에서는 Windows, Linux 또는 Mac에서 실행되는 PowerShell의 변수를 다룹니다. 오픈 소스 Bash 셸 사용자는 대신 Bash 셸의 변수에 대한 내 기사를 참조해야 합니다(하지만 Linux에서 PowerShell을 실행할 수 있고 오픈 소스이므로 이 기사를 계속 따라갈 수 있음).

참고: 이 기사의 예제는 오픈 소스 운영 체제 Linux에서 실행되는 PowerShell 세션에서 가져온 것이므로 Windows 또는 Mac을 사용하는 경우 파일 경로가 다릅니다. 그러나 Windows는 / \으로 자동으로 표시되며 모든 예제는 모든 플랫폼에서 작동합니다. 단, 명백한 차이점으로 대체해야 합니다(예:사용자 이름이 seth일 가능성이 통계적으로 거의 없음). ).

변수란 무엇입니까?

PowerShell에서 변수가 필요한지 여부는 터미널에서 수행하는 작업에 따라 다릅니다. 어떤 사용자에게는 변수가 데이터를 관리하는 데 필수적인 수단이지만, 어떤 사용자에게는 사소한 일시적인 편의이거나 어떤 사용자에게는 존재하지 않을 수도 있습니다.

결국 변수는 도구입니다. 용도를 찾았을 때 사용하거나 OS에서 관리한다는 사실을 알고 편안하게 그대로 둘 수 있습니다. 그러나 지식은 힘이며 Bash에서 변수가 작동하는 방식을 이해하면 모든 종류의 예상치 못한 창의적 문제 해결로 이어질 수 있습니다.

변수 설정

변수를 생성하기 위해 특별한 권한이 필요하지 않습니다. 그들은 무료로 만들고, 무료로 사용할 수 있으며 일반적으로 무해합니다. PowerShell에서는 변수 이름을 정의한 다음 변수 설정으로 값을 설정하여 변수를 만듭니다. 명령. 아래 예는 FOO라는 새 변수를 생성합니다. 값을 $HOME/Documents 문자열로 설정합니다. :

PS> Set-Variable -Name FOO -Value "$HOME/Documents" 

성공은 끔찍할 정도로 조용하므로 변수가 설정되었다는 확신이 없을 수도 있습니다. 변수 가져오기를 사용하여 결과를 직접 확인할 수 있습니다. (gv 줄여서) 명령. 변수를 정의한 대로 정확하게 읽을 수 있도록 따옴표로 묶을 수도 있습니다. 이렇게 하면 변수에 나타날 수 있는 모든 특수 문자가 보존됩니다. 이 예에서는 적용되지 않지만 다음을 형성하는 것이 여전히 좋은 습관입니다.

PS> Get-Variable "FOO" -valueOnly
/home/seth/Documents

FOO의 내용이 설정한 것과 정확히 일치하지 않습니다. 변수에 대해 설정한 리터럴 문자열은 $HOME/Documents였습니다. , 하지만 지금은 /home/seth/Documents로 표시됩니다. . 이것은 변수를 중첩할 수 있기 때문에 발생했습니다. $HOME 변수는 C:\Users에 있는지 여부에 관계없이 현재 사용자의 홈 디렉토리를 가리킵니다. Windows의 경우 /home Linux 또는 /Users 맥에서. $HOME 이후 FOO에 삽입됨 , 해당 변수가 확장됩니다. 회상할 때. 이러한 방식으로 기본 변수를 사용하면 여러 플랫폼에서 작동하는 이식 가능한 스크립트를 작성하는 데 도움이 됩니다.

변수는 일반적으로 한 시스템에서 다른 시스템으로 정보를 전달하기 위한 것입니다. 이 간단한 예에서 변수는 그다지 유용하지 않지만 여전히 정보를 전달할 수 있습니다. 예를 들어 FOO의 콘텐츠가 변수는 파일 경로이므로 FOO를 사용할 수 있습니다. 값이 참조하는 디렉토리에 대한 바로 가기로 사용됩니다.

FOO 변수를 참조하려면 의 콘텐츠 변수 자체가 아니라 변수 앞에 달러 기호($ ):

PS> pwd
/home/seth
PS> cd "$FOO"
PS> pwd
/home/seth/Documents

변수 지우기

변수 제거를 사용하여 변수를 제거할 수 있습니다. 명령:

PS> Remove-Variable -Name "FOO"
PS> gv "FOO"
gv :이름이 'FOO'인 변수를 찾을 수 없습니다.
[...]

실제로는 일반적으로 변수를 제거할 필요가 없습니다. 변수는 상대적으로 "저렴"하므로 생성하고 더 이상 필요하지 않을 때 잊어버릴 수 있습니다. 그러나 변수를 읽을 수 있는 다른 프로세스에 원치 않는 정보를 전달하는 것을 방지하기 위해 변수가 비어 있는지 확인하려는 경우가 있습니다.

충돌 방지 기능이 있는 새 변수 만들기

때로는 변수가 사용자나 다른 프로세스에 의해 이미 설정되었다고 믿을 만한 이유가 있을 수 있습니다. 재정의하지 않으려면 New-Variable을 사용할 수 있습니다. , 같은 이름의 변수가 이미 존재하는 경우 실패하도록 설계되었거나 조건문을 사용하여 먼저 변수를 확인할 수 있습니다.

PS> New-Variable -Name FOO -Value "example"
New-Variable :이름이 'FOO'인 변수가 이미 존재합니다.

참고: 이 예에서 FOO /home/seth/Documents로 설정됩니다. .

또는 간단한 if를 구성할 수 있습니다. 기존 변수를 확인하는 명령문:

PS> if ( $FOO ) 
>> { gv FOO } else
>> { 변수 설정 -이름 "FOO" -값 "quux" }

변수에 추가

변수를 덮어쓰는 대신 기존 변수에 추가할 수 있습니다. PowerShell에서 변수는 문자열, 정수, 배열 등 다양한 유형이 있습니다. 기본적으로 둘 이상의 값을 사용하여 변수를 생성하도록 선택할 때 문자로 구분된 문자열 또는 배열이 필요한지 여부를 결정해야 합니다. 어떤 식으로든 신경 쓰지 않을 수 있지만 변수의 데이터를 수신하는 응용 프로그램이 어느 쪽을 예상할 수 있으므로 대상에 따라 선택하십시오.

문자열 변수에 데이터를 추가하려면 += 구문:

PS> gv FOO
foo
PS> $FOO +=",bar"
PS> gv FOO
foo,bar
PS> $FOO. getType().이름
문자열

배열은 PowerShell의 특수한 유형의 변수이며 ArrayList 개체가 필요합니다. PowerShell의 .NET 내부에 대해 더 깊이 파고들어야 하므로 이는 이 기사의 범위를 벗어납니다.

환경 변수로 글로벌화

지금까지 이 기사에서 생성된 변수는 로컬입니다. , 즉 생성한 PowerShell 세션에만 적용됩니다. 다른 프로세스에서 액세스할 수 있는 변수를 생성하려면 환경 변수를 생성하면 됩니다. 이에 대해서는 이후 기사에서 다룰 것입니다.