我对文件和位置有5个不同的引用,如;
search | contents
#- | some.htm#9-22 called pat=
#-# | some.htm#1-some.htm#3 called pat2=
#-#-# | some.htm#21-some.htm#-some.htm#4 called pat3=
; | some.htm#6-some.htm#13;some.htm#22-23 called pat4=
else | some.htm#
csv数据文件中有大约550个这样的引用。
我遇到的问题是弄清楚如何测试包含引用的变量,看看它是否包含上面列出的搜索列。我知道它包含特殊字符。我没有找到在线测试中搜索它们的参考。
pat=[#-]
if [[ $ALIYAH == $pat ]]; then
SHIR1="$(echo "$ALIYAH" |awk -F \# '{print $1}')"
START1="$(echo "$ALIYAH" |awk -F \# '{print $2}'|awk -F - '{print $1}')"
END1="$(echo "$ALIYAH" |awk -F - '{print $2}')"
return
由于
所以我做了下面推荐的修改,但没有任何乐趣。测试不匹配,因此会降低到默认值而不是应该处理。调试输出
+ for ALIYAH in '"${arr[@]:2:11}"'
+ pat='[#-]'
+ [[ some.htm#11-38 == \[\#\-\] ]]
++ echo some.htm#11-38
++ awk -F '#' '{print $1}'
+ SHIR10=some.htm # this is the fall through, it should fill SHIR1
经过一番搜索,我试过了
if [[ "$ALIYAH" =~ [#-] ]]; then
并阻止它通过
因为我担心它对模式2和3也是正面测试
答案 0 :(得分:2)
在变量名称周围加上引号:
if [[ "$ALIYAH" == "$pat" ]]; then
...etc...