2012-06-20 2 views
1

예를 들어 --traditional 옵션을 다른 한 문자와 조합 할 수없는 것으로 나타났습니다. 다른 옵션 (예 : -i). 예를 들어옥타브 시작시 "-"및 "-"옵션을 결합하는 방법은 무엇입니까?

, 나는이

#!/usr/bin/octave --traditional 

내 옥타브하는 .m 파일의 첫 번째 행으로있을 때 그리고 그것은 작동합니다. 옥타브가 시작되고 스크립트가 실행됩니다.

하지만

#!/usr/bin/octave --traditional --silent --norc --interactive 

을 시도 할 때 작동하지 않습니다. 옥타브에서 오류가 발생했습니다. 옵션을 이해하지 못합니다.

나는 또한

#!/usr/bin/octave --traditional -qfi 

오류를하려고하면. 하지만이

#!/usr/bin/octave -qfi 

작품입니다.

문제는 --traditional에는 다른 모든 옵션처럼 짧은 문자 하나만 표시되지 않습니다. 이것은 내가

Options: 

    --debug, -d    Enter parser debugging mode. 
    --doc-cache-file FILE Use doc cache file FILE. 
    --echo-commands, -x  Echo commands as they are executed. 
    --eval CODE    Evaluate CODE. Exit when done unless --persist. 
    --exec-path PATH  Set path for executing subprograms. 
    --help, -h, -?   Print short help message and exit. 
    --image-path PATH  Add PATH to head of image search path. 
    --info-file FILE  Use top-level info file FILE. 
    --info-program PROGRAM Use PROGRAM for reading info files. 
    --interactive, -i  Force interactive behavior. 
    --line-editing   Force readline use for command-line editing. 
    --no-history, -H  Don't save commands to the history list 
    --no-init-file   Don't read the ~/.octaverc or .octaverc files. 
    --no-init-path   Don't initialize function search path. 
    --no-line-editing  Don't use readline for command-line editing. 
    --no-site-file   Don't read the site-wide octaverc file. 
    --no-window-system  Disable window system, including graphics. 
    --norc, -f    Don't read any initialization files. 
    --path PATH, -p PATH Add PATH to head of function search path. 
    --persist    Go interactive after --eval or reading from FILE. 
    --silent, -q   Don't print message at startup. 
    --traditional   Set variables for closer MATLAB compatibility. 
    --verbose, -V   Enable verbose output in some cases. 
    --version, -v   Print version number and exit. 

내가 matlab에와 호환 옥타브 코드를 실행에 주로 관심을 참조 옵션, 그래서 나는 경우 matlab에 호환 코드를 계속 확인이 --traditional 옵션을 사용하고 싶습니다 I Matlab 내에서 동일한 코드를 실행할 필요가있다.

또는 옥타브가 다른 명령을 사용하기 시작하면이 호환 모드를 "켤 수 있습니까?

Linux에서 GNU Octave 버전 3.2.4를 사용하고 있습니다.

감사

답변

2

나는 이것이 정말 octave 문제 그 자체라고 생각하지 않습니다. Unix shebang 표기법은 일반적으로 다소 제한적입니다. 내 머리 꼭대기에서 정확한 한계를 모르겠지만, 당신이 문제가 될 것 같은 shebang 라인에 하나 이상의 옵션을 추가하면 많은 구현이 행복하지 않을 것이라고 확신합니다.

래퍼 스크립트를 사용하면 아마도 이러한 문제를 해결할 수있는 표준 방법 일 것입니다.

짧은 옵션과 긴 옵션을 결합하는 것에 대한 문제를 해결하기 위해 유닉스 컨벤션은 이것을 허용하지 않습니다. octave에 패치를 적용하여 --traditional에 대한 짧은 옵션을 추가 할 수도 있습니다 (가능한 경우). 또는 사용자 또는 시스템 전반의 Octave 구성 파일에서 전통적인 동작을 지정하는 방법이 있다고 생각하지만, 제어하지 않는 시스템에서 스크립트가 작동해야하는 경우에는 도움이되지 않을 수 있습니다.

+0

"exec octave --traditional -q $ @"라는 래퍼 스크립트를 작성하여 $ @ 근본 원인 인이 문제를 해결했습니다. – shil88

관련 문제