문제

Squeak 및 Pharo에서 쉘 명령을 어떻게 호출 할 수 있습니까? 이러한 환경은 특정 UNIX 언어로 System () 함수와 같은 외부 쉘 명령을 실행하거나 백 틱을 실행하는 것과 같은 어떤 것이 있습니까 (편집기에게 할 수는 없지만 왼쪽의 왼쪽 열쇠를 밀 때 얻을 수있는 것”이 있습니까? 명령의 출력을 캡처하려면 1 "이상"탭 ")?

도움이 되었습니까?

해결책

Squeak에서 사용할 수 있습니다 명령 쉘, 그러나 지금은 Pharo가 무엇을 사용할 수 있는지 모르겠습니다.

다른 팁

패키지 osprocess를 사용하여 원하는 작업을 수행 할 수 있다고 생각합니다. 또한 Squeak-Dev 또는 Pharo 메일 링리스트에서 물어 보는 것이 더 낫다고 생각합니다.

Squeak/Pharo의 쉘 지원은 매우 제한적입니다. 이것을 개선 할 계획이 있습니다. 참조 산호 프로젝트. 귀하의 기여는 환영합니다.

두 가지 해결책이 있습니다.

패키지 ProcessWrapper를 사용하십시오. 장점 : 빠르고 쉬운 설치. 단점 : Win32에서만 제한된 기능.

패키지 osprocess/commandShell을 사용하십시오. 장점 : 꽤 좋은 기능 (파이프, 환경 대표, 쉘 같은 작업 공간 ...) 및 크로스 플랫폼. 단점 : vmmaker 도구를 사용하여 외부 플러그인을 빌드해야합니다.

Pharo 6과 함께 Windows 10을 사용하고 있으며 OSProcess 또는 OSSubprocess 클래스 (설치하기 어렵거나 최신 버전은 Windows 용으로 지원되지 않음).

나를 위해 일하는 것은 LIBC입니다. Stderr을 사용한 파일로 리디렉션 할 수 있습니다 2> 명령 내부 :

errors := '/tmp/errors.txt'.
result := LibC uniqueInstance system: 
    'echo "Hello World" > /tmp/hello.txt 2>', errors.
result = 0 ifFalse: [ errors asFileReference ]

사용을 사용하여 환경 변수를 조작 할 수 있습니다 (Windows에서 실패를 암시하는 1의 값을 반환하지만) :

   OSEnvironment current setEnv: 'MY_ENVIRONMENT_VARIABLE' value: '1'.

그러나 현재 디렉토리를 변경할 수 없었습니다.

OSEnvironment current changeDirectoryTo: myDirectory asFileReference. "--> doesNotUnderstand for Windows"

해결 방법은 명령 내에서 CD를 수행하는 것입니다.

result := LibC uniqueInstance system: 
    'cd ', myDirectory, ' && ls > /tmp/output.txt 2>', errors.

Windows에는 Win API에 래퍼가있어서 다음을 수행 할 수 있습니다.

| sqlPlusExe sqlPlusRunInDir scriptPathString| 

scriptPathString := (FileLocator imageDirectory / 'data' / 'sqlplus' / 'testquit.sql') pathString.

sqlPlusExe :='C:\oraclexe\app\oracle\product\11.2.0\server\bin\sqlplus.exe /nolog @' , scriptPathString.
sqlPlusRunInDir := 'C:\oraclexe\app\oracle\product\11.2.0\server\bin'.

sqlPlusWinProcessInformation := WinProcess 
        createAndWaitForProcess: sqlPlusExe 
        withCurrentDirectory: sqlPlusRunInDir 

enter image description here

Windows가 프로세스에서 수행 할 수있는 대부분의 지원에 대한 많은 지원이 있습니다 (Env, ...)

따라서 Oswindows 카탈로그를 살펴보십시오.

enter image description here

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top