처음에는 이것이 이상한 일회성 결함이라고 생각했지만 이제는 동일한 동작을 갖는 완전히 다른 두 번째 bash 기능을 발견하여 미치게 만들기 때문에 도움을 요청합니다.
문맥:저는 ZSH를 셸로 사용하여 Mac에서 작업하고 있습니다. 자주 수행하는 작업을 자동화하는 셸 함수 형태의 도우미 스크립트가 있습니다. 대부분은 매개변수 전달이 필요합니다. 이 매개변수는 2자리 국가 코드(AU, CA, UK, DE 등)입니다. 대부분은 잘 작동하지만 CA
인수로 전달되면 두 함수가 실패합니다.
실수:
cat: illegal option -- A
usage: cat [-belnstuv] [file ...]
테스트 중 설명은 두 기능 모두에 적용됩니다.
- 확인된 디렉터리가 존재합니다.
- 다른 모든 국가 코드는 유효합니다(미국, 영국, 호주, 독일, 일본).
- 소문자는
ca
유효합니다. - work로 끝나는 기타
A
임의의 2자 문자열입니다. - work 로 시작하는 기타 임의의 2자 문자열입니다
C
. - 와 같이 just 를 사용할
A
수도 있습니다taillog A
.
함수 1이 실패하면 다음을 실행합니다.taillog CA
function taillog() {
local grey="1;30"
local red="1;31"
local green="1;32"
local yellow="1;33"
local cyan="1;36"
tail -f /Users/myUser/Sites/Country-"$1"/logs/error.log \
| GREP_COLOR="$green" grep -E --color=always --line-buffered "(\[php7?:info\])|$" \
| GREP_COLOR="$cyan" grep -E --color=always --line-buffered "(\[php7?:notice\])|$" \
| GREP_COLOR="$yellow" grep -E --color=always --line-buffered "(\[php7?:warn\])|(?i:warn(ing))|$" \
| GREP_COLOR="$red" grep -E --color=always --line-buffered "(\[php7?:error\])|(?i:error(s))|(?i:fatal)|$" \
| GREP_COLOR="$grey" grep -E --color=always --line-buffered "(?i:debug)|$"
}
함수 2가 실패했습니다. 실행하세요.findChanged CA 600
function findChanged() {
find /Users/myUser/Sites/Country-"$1"/public/wp-content/plugins -type f -cmin -"$2" -not -path "*/\.git/*" | more
}
다른 모든 국가 코드는 예상대로 작동합니다. 불만의 CA
원인은 정확히 무엇 입니까? cat
이것은 나를 미치게 만든다.
답변1
내 ZSH 플러그인 중 하나인 "common-aliases"가 전역 별칭을 주입하여 alias -g CA="2>&1 | cat -A"
모든 입력 CA
이 cat -A
. 그것이 내 문제를 일으키는 원인입니다. 이 줄을 제거하면 위에 나열된 셸 함수가 예상대로 실행될 수 있습니다.