bash -c“v = 값; echo $ v”는 아무것도 표시하지 않습니다


답변:


18

여기에는 두 가지 껍질이 있습니다.

  • 이것을 호출하는 대화식 쉘인 호출 쉘

  • 비 로그인, 비 대화식 쉘 bash -c

이제 문제는 큰 따옴표 안에 변수가 각각의 값으로 확장된다는 것입니다. 이것은 모든 쉘에 해당됩니다.

따라서 큰 따옴표를 사용한 것처럼 변수 확장 $v은 실제로 호출 된 쉘이 아니라 호출 된 쉘에서 발생합니다. 그러나 선언 v=value된은 비대화 형 쉘에서 발생합니다.

따라서 전체적으로 호출 된 쉘에 변수가 정의되고 호출 쉘에서 확장 (미리)됩니다. 호출 변수에 value 변수가 설정되어 있지 않으므로 결과물에 아무것도 표시되지 않습니다.

이제 생성 된 쉘에서 변수 정의 및 확장을 수행하려면 작은 따옴표 또는 이스케이프를 사용하십시오 $.

$ bash -c "v=value; echo $v"

$ bash -c 'v=value; echo $v'
value

$ bash -c "v=value; echo \$v"
value

1

큰 따옴표 $v는 대화식 쉘로 대체됩니다. 작은 따옴표를 사용하십시오.

$ bash -c 'v=value;echo $v'
value
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.