나는 (실제로) 함수형 프로그래밍에 익숙하지 않지만 (실제로는 파이썬을 사용하여 접촉 했음) 쉘 환경에서 목록 집약적 인 작업에 대한 좋은 접근 방법 인 것 같습니다.
나는 이런 식으로하고 싶습니다 :
$ [ git clone $host/$repo for repo in repo1 repo2 repo3 ]
이런 종류의 기능을 가진 유닉스 쉘이 있습니까? 또는 파이썬 내에서 쉽게 쉘 액세스 (명령, env / vars, readline 등)를 허용하는 기능 (파이썬의 대화 형 인터프리터를 bash 대신 사용하는 것이 좋습니다).
편집하다:
아마도 비교 예가 명확해질 것입니다. dir / file 로 구성된 목록이 있다고 가정 해 봅시다 .
$ FILES=( build/project.rpm build/project.src.rpm )
그리고 나는 정말 간단한 작업을하고 싶습니다 : 모든 파일을 dist /에 복사 하고 시스템에 설치하십시오 (빌드 프로세스의 일부입니다).
bash 사용 :
$ cp $ {파일 [*]} dist / $ cd dist && rpm -Uvh $ ($ {files [*]}에서 f의 경우 : 기본 이름 $ f; done))
"pythonic shell"접근 방식 사용 (주의 : 이것은 가상 코드 임) :
$ cp [파일의 파일에 대한 os.path.join ( 'dist', os.path.basename (file))] 'dist'
당신은 차이점을 볼 수 있습니까? 그것이 내가 말하는 것입니다. 이런 종류의 것들이 내장 된 쉘을 어떻게 종료 할 수 없습니까? 쉘에서 목록을 처리하는 것은 정말 고통 스럽습니다. 파일 목록, PID 목록, 모든 목록 등 매우 일반적인 작업이기도합니다.
그리고 정말 중요한 점은 구문과 도구 / 기능을 사용하는 것입니다. 모두 이미 알고 있습니다 : sh와 python.
IPython은 좋은 방향으로 이음새가 있지만 부풀어 오른다 : var name이 '$'로 시작하면 '$$'이면 그렇게합니다. 구문은 "자연스럽지"않으므로 많은 규칙과 "해결 방법"( [ ln.upper() for ln in !ls ]
-> 구문 오류)