변수 목록이 있고 파일의 변수를 복사하여 셸에 붙여넣고 Enter실행을 누릅니다. 예를 들어:
var1="myvar1"
var2="myvar2"
실제로 변수가 많기 때문에 시간을 절약하기 위해 하나씩 복사해서 붙여넣고 실행하는 것이 아니라 한 번의 작업으로 모든 작업을 완료하길 바랍니다.
복사하여 붙여넣기를 시도했습니다.
(
var1="myvar1"
var2="myvar2"
)
echo $var1
해당 형식의 날짜 대신 빈 줄을 출력합니다.
한 번의 작업으로 여러 변수를 실행하는 방법은 무엇입니까?
답변1
하나씩 복사할 필요 없이 모든 줄을 함께 붙여넣으면 개행 문자가 Enter 키로 사용됩니다.
왜냐하면
(
var1="myvar1"
var2="myvar2"
)
서브쉘에서 실행되기 때문에 작동하지 않습니다. final 이전에 변수의 내용을 인쇄하면 작동합니다
)
.
(
var1="myvar1"
var2="myvar2"
echo $var2
)
Commpound Commands
다음 섹션에서 설명 합니다 man bash
.
복합 명령
복합 명령은 다음 명령 중 하나입니다. 대부분의 경우 명령 설명의 목록은 하나 이상의 줄 바꿈으로 명령의 나머지 부분과 구분될 수 있으며 세미콜론 대신 줄 바꿈 문자가 뒤에 올 수 있습니다.
(list) list 서브셸 환경에서 실행합니다(아래 명령 실행 환경 참조). 쉘 환경에 영향을 미치는 변수 할당 및 내장 명령은 명령이 완료된 후에 더 이상 유효하지 않습니다. 반환 상태는 목록의 종료 상태입니다.
나중에 그는 이렇게 말했습니다.
{ list; } list는 현재 쉘 환경에서만 실행됩니다. 목록은 줄 바꿈 또는 세미콜론으로 끝나야 합니다. 이를 그룹 명령이라고 합니다. 반환 상태는 목록의 종료 상태입니다. 메타 문자( 및 )와 달리 { 및 }는 예약어이므로 예약어를 인식할 수 있는 위치에 나타나야 합니다. 단어 분리를 유발하지 않으므로 공백이나 기타 쉘 메타 문자로 목록과 구분해야 합니다.
따라서 명령은 하위 쉘에서 실행되지 않고 현재 쉘 환경에서 실행되기 때문에 작동합니다.
{
var1="myvar1"
var2="myvar2";
}
에 대해 간단한 질문을 많이 하시는 것 같아요 Bash
. Bash 튜토리얼을 읽고 man bash
일반적인 내용을 알아보세요.헤비히트 트랩.
답변2
사용하는 괄호로 인해 하위 쉘이 포함된 명령을 실행하므로 쉘이 종료되면 de 변수는 여전히 현재 쉘에 설정되지 않습니다.
왜 이 괄호가 이러한 변수를 "한 번" 설정한다고 생각하는지, 또는 왜 이러한 변수를 "한 번" 설정해야 하는지는 알 수 없지만 이러한 할당을 다음과 같이 한 줄에 넣을 수 있습니다.
var1="myvar1" var2="myvar2"
물론 Arkadiusz Drabczyk가 언급한 것처럼 이 행을 모두 복사하여 붙여넣는 것이 더 쉽고 원하는 작업을 수행할 수 있다면 하지 않을 이유가 없습니다.