나는 bashism을 많이 사용하는 bash로 작성된 프로그램을 가지고 있습니다. 나는 거기에 있고 checkbashism
bash shellcheck
가 --posix
수동 검토에 적합하다는 것을 알고 있습니다. 하지만 내가 정말로 원하는 것은 Python과 같은 것입니다.2 대 3나는 그것이 존재한다고 가정합니다(만약 존재하지 않는다면 그것에 대해 쓸 수도 있습니다).
기본적으로 저는 최신 bash에서 프로그램을 계속 작성하고 싶지만 다음과 같이 실행되는 빌드 스크립트도 갖고 싶습니다.
$ bash2posix myprogram.sh > myprogram-compat.sh
해결할 수 있는 문제는 "수정"할 것이며, 해결할 수 없는 문제가 있으면 중단할 것입니다. 존재에 대한 어떤 증거도 찾지 못했습니다. 혹시 아시는 분 계신가요? 감사해요.
편집: 나는 이것이 가능하다고 확신합니다. 일반적으로 많은 굴욕에 상응하는 비용이 상당히 많이 듭니다. 예를 들어 ( )에 대한 문자열 대체는 정밀 연산자 ( )를 사용하여 문자열의 특정 접미사를 "검색"하는 내장 함수를 통해 수행할 수 있습니다 ${//}
. 그런 다음 바꾸기 명령의 길이를 테스트하여 "찾았는지" 확인한 다음 바꾸기 명령을 사용하여 새 문자열을 재구성할 수 있습니다. 이것이 효율적인가요? 아니요, 물론 그렇지 않습니다. 그러나 그것은 전적으로 가능합니다.printf
.
답변1
그것은 불가능합니다. 적어도 100%는 아닙니다.
나는 GNU Parallel에서 env_parallel.dash
기사를 썼습니다 env_parallel.bash
. (https://git.savannah.gnu.org/cgit/parallel.git/tree/src/env_parallel.dash그리고https://git.savannah.gnu.org/cgit/parallel.git/tree/src/env_parallel.bash)
(함수 본문 표시)에 해당 항목이 없으므로 으로 env_parallel.bash
변환 할 수 없습니다 .env_parallel.dash
typeset -f myfunc
dash