2011-04-27 4 views
1

문자열 배열을 검색하고 입력 문자열이 존재하는지 확인하기 위해 bash 쉘에서 함수를 정의했습니다. 슬래시가있는 문자열에서는 작동하지 않습니다. 아래 코드를 참조하십시오.셸 스크립트의 슬래시와 문자열 비교

#!/bin/bash 
in_array(){ 
    search_path="$1" 
    shift 

    while [ -n "${1+defined}" ] 
    do 
     echo $1 $search_path 
     if [ $1 = $search_path ] 
     then 
      return 0 
     fi 
     shift 
    done 
    return 1 
} 

exclude_dirs=('/home/backup' '/home/xxx') 
in_array 'home/backup' ${exclude_dirs[@]} 
echo $? 

왜 설명 할 수 있습니까?

답변

2

슬래시가 없습니다.

in_array '/home/backup' ${exclude_dirs[@]} 

을 코드에 입력해야합니다. 당신이 틀린 곳을 분명히 보여줘야합니다.

0

당신이 당신의 테스트 케이스에 첫 번째 인수의 초기 슬래시를 누락하기 때문에 :

home/backup 

/home/backup