C popen 호출 (을 호출 sh -c '<command>'
)을 사용하여 작은 셸 스크립트를 실행해야합니다 . 내 스크립트가 작동하지 않습니다. 이 스 니펫에 문제를 분리했습니다.
#!/bin/bash
sh -c 'bash -xev -s << EOF
a=1
echo "a=$a"
EOF'
어느 출력
a=1
+ a=1
echo "a="
+ echo a=
a=
내가 무엇을 놓치고 있습니까? stdin의 변수를 사용할 수없는 이유는 무엇입니까?
(버전 : GNU bash 5.1.4, 대시 0.5.11 + git20200708 + dd9ef66-5)
here-document의 본문은 다음의 일부를 인용하거나 이스케이프하지 않는 한 매개 변수 확장, 명령 대체 및 산술 확장의 적용을받습니다 EOF
.
$ sh -c 'bash -xev -s << \EOF
a=1
echo "a=$a"
EOF'
a=1
+ a=1
echo "a=$a"
+ echo a=1
a=1
일반 따옴표 "EOF"
또는 'EOF'
.
더 복잡한 경우에, 예를 들어, 당신은 몇 가지 있지만 모든 변수는 외부 쉘에 의해 확장 할 위치, 당신은 떠날 수 EOF
인용 부호로 둘러싸과 같은 특정 변수를 탈출 \$a
- 예를 들어, 참조
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다