쉘 : if에서 매개 변수와 함께 함수 사용

안드레아 실베스트리

아래 코드를 실행하려고하는데 if 문에서 내 함수를 사용하려고하면 -bash: [: too many arguments오류가 발생합니다. 왜 그런가요?

미리 감사드립니다!

notContainsElement () {
  local e match="$1"
  shift
  for e; do [[ "$e" == "$match" ]] && return 1; done
  return 0
}

list=( "pears" "apples" "bananas" "oranges" )
blacklist=( "oranges" "apples" )
docheck=1

for fruit in "${list[@]}"
do
    if [ notContainsElement "$fruit" "${blacklist[@]}" -a $docheck = 1 ]
    then
        echo $fruit
    fi
done
Kusalananda

사용할 때 if [ ... ]실제로 [유틸리티를 사용하고 있습니다 (과 동일 test하지만 마지막 인수가 여야 함 ]).

[함수 실행을 이해하지 못하고 문자열을 예상합니다. 다행히도 [여기서는 전혀 사용할 필요가 없습니다 (적어도 함수에 대해서는).

if [ "$docheck" -eq 1 ] && notContainsElement "$fruit" "${blacklist[@]}"; then
  ...
fi

정수를 먼저 확인하고 있으므로 $docheck1이 아닌 경우 함수 호출을 전혀 피할 수 있습니다 .

This works because if takes an arbitrary command and decides what to do from the exit status of that command. Here we use a [ ... ] test together with a call to your function, with && in-between, creating a compound command. The compound command's exit status would be true if both the [ ... ] test and the function returned zero as their exit statuses, signalling success.

As a style note, I would not have the function test whether the array does not contain the element but whether if does contain the element, and then

if [ "$docheck" -eq 1 ] && ! contains "$fruit" "${blacklist[@]}"; then ...

Having a function test a negative will mess up logic in cases where you do want to test whether the array contains the element (if ! notContainsElement ...).

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

clob 매개 변수와 함께 where 절에서 함수 사용

분류에서Dev

Struts 2에서 동적 매개 변수와 함께 ActionForward 사용

분류에서Dev

JavaScript와 함께 함수 매개 변수를 사용하여 함수 내에서 전역 변수 설정

분류에서Dev

AngularJS와 함께 HTML에서 변수로 URL 매개 변수 사용

분류에서Dev

다른 함수 내에서 매개 변수와 함께 함수의 반환 값을 사용하는 방법

분류에서Dev

Git에서 다른 매개 변수와 함께 이름 만 사용

분류에서Dev

Struts 2 및 JSP에서 둘 이상의 매개 변수와 함께 getText () 사용

분류에서Dev

Laravel에서 OUT 매개 변수와 함께 저장 프로 시저 사용

분류에서Dev

Excel 파워 쿼리에서 매개 변수와 함께 OData 피드 사용

분류에서Dev

도커 ENTRYPOINT를 쉘 스크립트 파일 결합 매개 변수와 함께 사용하는 방법

분류에서Dev

flutter : 상태가있는 생성자에서 매개 변수와 함께 함수를 사용하는 방법

분류에서Dev

WPF의 MultiBinding QuickConverter에서 매개 변수와 함께 클래식 변환기를 사용할 수 있습니까?

분류에서Dev

변수와 함께 Q 개체 사용

분류에서Dev

params와 함께 clojure 매크로에서 익명 함수 사용

분류에서Dev

CalendarApp.getEvents ()에서 검색 매개 변수와 함께 정규식을 사용할 수 있습니까?

분류에서Dev

qt에서 두 개의 매개 변수와 함께 qDebug ()를 사용하는 방법은 무엇입니까?

분류에서Dev

하나의보기에서 2 개의 매개 변수와 함께 AVG ()를 사용하는 방법

분류에서Dev

합리적인 doclint 매개 변수와 함께 maven JavaDoc 사용

분류에서Dev

PowerShell-값 매개 변수와 함께 "Get PnPListItem"사용

분류에서Dev

RODBC와 함께 Netezza 조정 매개 변수 사용

분류에서Dev

DRF 라우터와 함께 최신 GET 매개 변수 사용

분류에서Dev

json의 매개 변수와 함께 angularjs 필터 사용

분류에서Dev

mySQL 및 JSP ERROR와 함께 URL 매개 변수 사용

분류에서Dev

& key 매개 변수와 함께 remove-if-not 사용

분류에서Dev

& key 매개 변수와 함께 remove-if-not 사용

분류에서Dev

$ _GET 매개 변수와 함께 $ routeProvider를 사용하는 방법

분류에서Dev

WeatherAPI와 함께 Retrofit @GET 사용-정적 매개 변수

분류에서Dev

IN 매개 변수로 Array와 함께 SimpleJdbcCall 사용 (DB2)

분류에서Dev

UIRouter 및 구성 요소와 함께 매개 변수 사용

Related 관련 기사

  1. 1

    clob 매개 변수와 함께 where 절에서 함수 사용

  2. 2

    Struts 2에서 동적 매개 변수와 함께 ActionForward 사용

  3. 3

    JavaScript와 함께 함수 매개 변수를 사용하여 함수 내에서 전역 변수 설정

  4. 4

    AngularJS와 함께 HTML에서 변수로 URL 매개 변수 사용

  5. 5

    다른 함수 내에서 매개 변수와 함께 함수의 반환 값을 사용하는 방법

  6. 6

    Git에서 다른 매개 변수와 함께 이름 만 사용

  7. 7

    Struts 2 및 JSP에서 둘 이상의 매개 변수와 함께 getText () 사용

  8. 8

    Laravel에서 OUT 매개 변수와 함께 저장 프로 시저 사용

  9. 9

    Excel 파워 쿼리에서 매개 변수와 함께 OData 피드 사용

  10. 10

    도커 ENTRYPOINT를 쉘 스크립트 파일 결합 매개 변수와 함께 사용하는 방법

  11. 11

    flutter : 상태가있는 생성자에서 매개 변수와 함께 함수를 사용하는 방법

  12. 12

    WPF의 MultiBinding QuickConverter에서 매개 변수와 함께 클래식 변환기를 사용할 수 있습니까?

  13. 13

    변수와 함께 Q 개체 사용

  14. 14

    params와 함께 clojure 매크로에서 익명 함수 사용

  15. 15

    CalendarApp.getEvents ()에서 검색 매개 변수와 함께 정규식을 사용할 수 있습니까?

  16. 16

    qt에서 두 개의 매개 변수와 함께 qDebug ()를 사용하는 방법은 무엇입니까?

  17. 17

    하나의보기에서 2 개의 매개 변수와 함께 AVG ()를 사용하는 방법

  18. 18

    합리적인 doclint 매개 변수와 함께 maven JavaDoc 사용

  19. 19

    PowerShell-값 매개 변수와 함께 "Get PnPListItem"사용

  20. 20

    RODBC와 함께 Netezza 조정 매개 변수 사용

  21. 21

    DRF 라우터와 함께 최신 GET 매개 변수 사용

  22. 22

    json의 매개 변수와 함께 angularjs 필터 사용

  23. 23

    mySQL 및 JSP ERROR와 함께 URL 매개 변수 사용

  24. 24

    & key 매개 변수와 함께 remove-if-not 사용

  25. 25

    & key 매개 변수와 함께 remove-if-not 사용

  26. 26

    $ _GET 매개 변수와 함께 $ routeProvider를 사용하는 방법

  27. 27

    WeatherAPI와 함께 Retrofit @GET 사용-정적 매개 변수

  28. 28

    IN 매개 변수로 Array와 함께 SimpleJdbcCall 사용 (DB2)

  29. 29

    UIRouter 및 구성 요소와 함께 매개 변수 사용

뜨겁다태그

보관