shell脚本中的斜杠字符串比较

时间:2011-04-27 01:47:11

标签: shell

我在bash shell中定义了一个函数来搜索字符串数组并确定输入字符串是否存在。 它不适用于带斜杠的字符串。请参阅以下代码:

#!/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 个答案:

答案 0 :(得分:2)

你错过了一个斜线。应该是

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

您已经在代码中使用了echo $1 $search_path。它应该清楚地告诉你你哪里错了。

答案 1 :(得分:0)

因为您在测试用例的第一个参数中缺少初始斜杠:

home/backup

VS

/home/backup