셸 스크립트: "CA"를 셸 함수에 인수로 전달할 때 "cat: 불법 옵션 --A" 오류가 발생하고 다른 2자 인수는 예상대로 작동합니다.

셸 스크립트: "CA"를 셸 함수에 인수로 전달할 때 "cat: 불법 옵션 --A" 오류가 발생하고 다른 2자 인수는 예상대로 작동합니다.

처음에는 이것이 이상한 일회성 결함이라고 생각했지만 이제는 동일한 동작을 갖는 완전히 다른 두 번째 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"모든 입력 CAcat -A. 그것이 내 문제를 일으키는 원인입니다. 이 줄을 제거하면 위에 나열된 셸 함수가 예상대로 실행될 수 있습니다.

관련 정보