다른 프로그램과 같은 이름의 함수를 만들어야 하는 경우가 많은데, 이것이 bash 스크립트를 사용하는 좋은 방법인지 모르겠습니다.
예:
function echo () {
echo -n "$@" ;
}
테스트 후에는 bin 경로 앞의 스크립트 내부에서 함수 이름을 확인하는 것처럼 보입니다. 나는 이것과 내가 알아야 할 다른 정보를 확인하고 싶습니다.
답변1
echo() {
command echo -n "$@"
}
여기서 사용한다는 것은 함수가 아닌 명령(내장됨)을 command
요청한다는 의미입니다 . 그렇지 않으면 명령이 우선 적용됩니다.echo
이것은 또한 내장 명령이기 때문에(그런데 내장 명령이 파일 시스템 명령보다 우선하기 때문에 echo
검색되지 않습니다 ) 다음과 같이 수행할 수도 있습니다.$PATH
echo() {
builtin echo -n "$@"
}
후자의 접근 zsh
방식 이 command echo
실행되는 것이 바람직합니다 /bin/echo
(시뮬레이션 제외 sh
).
쉘 간에는 약간의 미묘한 차이가 있지만 일반적으로 우선순위는 다음과 같습니다.
- 특수 내장 기능
- 기능
- 내장 기능
- 명령
$PATH
(그리고 순서는 내장 명령에 의해 관리되는 테이블 안과 내부의 순서에 따라 달라집니다$PATH
)hash
hash
셸 구문의 별칭과 키워드( for
, if
...)는 인용되지 않은 경우 앞에 오는 것으로 처리됩니다.
일부 쉘에서는 1
또는 와 같이 및 의 순서가 반대입니다. 함수로 호출할 때 특수 내장 함수와 동일한 이름의 함수를 정의하는 것은 허용되지 않습니다.2
bash
zsh
bash
sh