나는 현재 모든 함수를 포함하는 함수 파일을 이를 사용하는 여러 스크립트에 소싱하여 이 작업을 수행했습니다.
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에서는