Windows 10에서 다음 버전의 bash를 사용하고 있습니다.
GNU bash, 버전 4.4.23(1)-릴리스(x86_64-pc-msys)
Linux에서 실행한 누군가로부터 이 스크립트를 받았습니다. Windows에서 실행하면 다른 결과가 나타납니다.
스크립트는 다음과 test.sh
같습니다
#!/bin/bash
set -x
( . settings.sh ; . constants.js ) > output.js
settings.sh
:
TEST_URL="https://myurl.com"
constants.js
:
cat << EOF
export class Output {
}
Constants.Url = "$TEST_URL";
EOF
output.js
Linux에서는 다음과 같습니다.
export class Output {
}
Constants.Url = "https://myurl.com";
이 스크립트는 Windows에서는 실행되지 않습니다. 나는 그것을 다음과 같이 수정했습니다.
#!/bin/bash
set -x
( ./settings.sh ; ./constants.js ) > output.js
Windows의 경우:
export class Output {
}
Constants.Url = "";
Windows에서 Linux와 동일한 결과를 얻기 위해 스크립트를 작성하는 방법을 아시나요?
답변1
(./settings.sh; ./constants.js)
Bourne Again 쉘을 스크립트 해석기로 실행하는 하위 프로세스에서 실행됩니다. 두 스크립트를 하위 프로세스로 실행하는 하위 쉘을 생성합니다.
첫 번째 첨자는 쉘 변수를 설정합니다. 그것도 아니야시도쉘 변수에서 환경 변수로 내보냅니다. 하지만 그렇다고 해도가지다, 그건 작동하지 않습니다. 하위 프로세스는 자신의 환경과 하위 프로세스의 환경에만 영향을 미칠 수 있습니다. 부모(자식) 쉘이나 할아버지에는 영향을 미칠 수 없습니다. 두 번째 첨자에는 변수가 없으며 빈 문자열로 출력을 생성합니다.
첫 번째 스크립트는 소스로 제공되어야 하며 하위 프로세스로 실행되어서는 안 됩니다.
(../settings.sh;./constants.js)