문자열이 배열에 있는지 확인하고 싶습니다. Google에서 다음 기능을 찾았습니다. 하지만 이 기능의 의미를 완전히 이해할 수는 없습니다. 이 함수에서는 match
일치시킬 문자열이 할당됩니다. 그런데 배열은 어디에 저장되어 있나요? 일부 출력을 추가했지만 변수는 e
항상 비어 있습니다. 무슨 뜻인지 찾아봤습니다 shift
. 변수를 왼쪽과 $2
으로 이동합니다 $1
. 그러나 그것은 쓸모없게 되었습니다 $1
. 이 기능이 어떻게 작동하는지 아는 사람이 있나요? 매우 감사합니다.
containsElement () {
local e match="$1"
echo $match
echo $e
shift
echo $e
echo $match
for e; do [[ "$e" == "$match" ]] && return 0; done
return 1
}
array=("something to search for" " for" "a string" "test2000")
containsElement "a string" "${array[@]}"
echo $?
답변1
남자 배쉬에서 :
~을 위한이름[ [ 존재하다 [단어...]]; ] 하다목록;완료
...
"인 경우"단어" 생략하면 for 명령이 실행됩니다. 목록 각 위치 인수 세트마다 한 번씩
실제로는 동일한 작업을 수행합니다.
for e in "$@"; do
명령 후에는 shift
루프 반복의 위치 인수에 배열 요소만 남습니다.for