여러 스크립트에서 사용되는 함수를 포함하는 가장 좋은/일반적인 방법은 무엇입니까?

여러 스크립트에서 사용되는 함수를 포함하는 가장 좋은/일반적인 방법은 무엇입니까?

나는 현재 모든 함수를 포함하는 함수 파일을 이를 사용하는 여러 스크립트에 소싱하여 이 작업을 수행했습니다.

source ./functions.sh

내가 알아차린 한 가지 단점은 구문 오류에 대해 bash가 인쇄하는 줄 번호가 더 이상 원본 스크립트의 번호가 아니라는 것입니다.

답변1

당신이 그것을 사용하는 방식은 합리적입니다.
나는 당신의 문제를 재현할 수 없습니다배쉬 쉘나는 (GNU bash 버전 4.1.2와 GNU bash 버전 4.3.11) 작업을 할 수 있었습니다. 아래를 참조하세요:


테스트 스크립트 go.sh. 다음을 ./go.sh사용하여 실행 가능하게 만든 후에 실행할 수 있습니다 .chmod u+x go.sh/bin/bash go.sh

echo  "   ### Here we start ###"  Script line 1
source my_sourced_file
echo Script line 3
casfsda    # this is the line 4 of script
echo Script line 5
f  "Script line #6 using the function from sourced file"
echo "   ### Here we finish ###" Script line 7

현재 디렉터리에 넣어야 하는 기능이 포함된 파일 이름은 다음과 같습니다 my_sourced_file.

echo Hello word this is the 1 line of my_sourced_file
f(){ echo Hello $1 ;}
f "Gustave line number 3 of  my_sourced_file"
echo linea 4 my_sourced_file

출력(in검은색오류)

### 여기서 시작합니다 ### 스크립트 라인 1
안녕하세요, 이것은 my_sourced_file의 첫 번째 라인입니다.
Hello Gustave my_sourced_file의 라인 번호 3
라인a 4 my_sourced_file
스크립트 라인 3
./go.sh: 4행: casfsda: 명령을 찾을 수 없음
스크립트 라인 5
소스 파일의 함수를 사용하는 Hello 스크립트 라인 #6 ### 여기서 완료합니다 ### 스크립트 라인 7

  • GNU bash 버전 4.3.11에서 테스트되었습니다.
  • 이전 GNU bash 버전 4.1.2에서는

관련 정보