我在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 $?
你能解释一下原因吗?
答案 0 :(得分:2)
in_array '/home/backup' ${exclude_dirs[@]}
您已经在代码中使用了echo $1 $search_path
。它应该清楚地告诉你你哪里错了。
答案 1 :(得分:0)
因为您在测试用例的第一个参数中缺少初始斜杠:
home/backup
VS
/home/backup