여러 개의 파일이 있다고 가정해 보겠습니다.
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.sh
z.sh
for f in dir/*.sh; do . "$f"; done