Bash 기능을 새로운 쉘 파일에 동적으로 결합

Bash 기능을 새로운 쉘 파일에 동적으로 결합

여러 개의 파일이 있다고 가정해 보겠습니다.

a.sh
b.sh
c.sh
...
z.sh

각 파일에는 다음과 같은 기능이 있습니다.

   a(){
      echo "fooa" | bash
    }

지금,만약에모든 기능을 하나의 파일에 넣을 수 있으며 다음과 같습니다.

   a(){
      echo "fooa" | bash
   }

   b(){
      echo "foob" | bash
   }

   c(){
      echo "fooc" | bash
   }
    ...
   z(){
      echo "fooz" | bash
   }

문제는 실제로 다른 파일에 있다는 것입니다. 내가 원하는 것은 소스 10개 또는 20개 파일 대신 하나의 파일을 얻을 수 있도록 동적으로 파일에 쓰는 것입니다.

이를 수행하는 가장 좋은 방법은 무엇입니까?

내가 할 수 있는 한 가지는 파일을 반복해서 가져오고 싶은 파일 1개에 해당 내용을 추가하는 것입니다. 다른 가능한 방법이 있나요?

답변1

cat *.sh > all.sh모든 파일을 하나로 연결합니다. 이미 존재하는 경우 *.sh일치하기 때문에 약간 부정확 하지만 all.sh여기서 실행하기 all.sh전에 리디렉션이 지워집니다 cat.

다른 모든 항목을 가져오는 스크립트를 작성할 수도 있습니다( 호출 includeall.sh).

for f in *.sh; do
    if [ "$f" != "includeall.sh" ]; then
        . "$f"
    fi
done

그런 다음 그것을 얻기 위해 사용합니다 . includeall.sh. 이는 if자신을 다시 포함하는 것을 방지하기 위해 수행됩니다. 하지만 ..script를 별도의 디렉토리에 두는 것은 includeall아마도 나쁜 생각이 아닐 것입니다 . 이렇게 하면 디렉토리 구조가 더 깔끔해지고 실수로 잘못된 스크립트를 얻는 것이 더 어려워집니다. 이 경우.a.shz.shfor f in dir/*.sh; do . "$f"; done

관련 정보