2011-02-15 3 views
1

pdksh 및 mksh는 내가 예상 한 범위 지정 구현을 가지고있는 것처럼 보입니다.다른 쉘 언어의 범위 지정 문제가 있습니까?

예를 들어

:

readonly x='global' 

f() { 
    local x 
    readonly x='f' 
    echo $x 
} 

g() { 
    local x 
    readonly x='g' 
    echo $x 
} 

echo $x 

f 
g 

echo $x 

pdksh 같은 내 예상 결과를 mksh :

global 
f 
g 
global 

그리고 배쉬가 실패

line 5: local: x: readonly variable 

대시와 ksh93의도 내 예상하지 못했습니다. (Ksh93의 테스트에서 localtypeset으로 바 꾸었습니다.)

이것은 혼란스러워 보입니다.

업데이트 : 질문을 편집했습니다. 이전 질문은 분명한 방법으로 언급되지 않았습니다.

답변

1

전역 변수가 읽기 전용이 아닌 경우 배쉬 및 대시가 실패하지 않습니다.

이없는 경우에만 Korn (ksh93)이 실패하지 않습니다. x의 인스턴스는 읽기 전용입니다.

+1

gnu.bash.bug 메일 링리스트에는 [최근 토론] (http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00105.html)이 있습니다. –

관련 문제