2017-11-12 13 views
3

MSYS2 x64 및 Cygwin64 bash, 콘솔 및/bin/sh 스크립트에서 다음 명령을 실행하려고합니다.루프 내 파이프로 대체 할 때 MSYS2 bash가 떨어집니다.

for a in 0; do 
    echo b=$(echo "c-d" | tr - _) 
done 

출력 가져 오기 : B =
을 때 예상 : B STATUS_STACK_OVERFLOW 예외로 = c_d

그리고 sh.exe.stackdump 파일. 이 작업은 루프 내에서 대체 및 파이프를 사용하여 행에서 tr, grep, sed와 같은 작업을 수행 할 때만 발생합니다. Bash 버전 4.4.12 (최신).

이전에 동일한 Cygwin 빌드에서 오류없이 실행 된 ffmpeg configure 스크립트, parse 옵션의 변경된 부분입니다.

원래 스크립트는

for opt do 
    case "$opt" in 
     #... 
     --enable-?*|--disable-?*) 
      eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g') 
      #... 
     ;; 
     #... 
    esac 
done 

bash는 옵션이 문제를 해결할 수있는 방법이 무엇입니까?

+0

당신은 당신이'/ 빈/sh' 스크립트로이를 실행하고 말을? '/ bin/bash' 스크립트로 시도 했습니까? [Shebang'#!/bin/bash'] – mathB

+0

예, 동일한 예외가 발생합니다 –

+0

'변경된 부분'뿐만 아니라 ffmpeg 스크립트의 '원본 부분'을 제공 할 수 있습니까? 또는 그것이 효과를 내기 전에 무엇이 있었고, 이것을 얻기 위해 무엇을 바꾸 었는가? – mathB

답변

0

아마 - 옵션 시도로한다 - 옵션의 끝 지정 :

tr -- - _ 
+0

이것은 단지 예입니다. –