请教:如何在CSH脚本中对数组执行grep模式匹配?
在CSH中实现数组的模式匹配
CSH没有Bash里[[ "${a[*]}" =~ "varun" ]]这种简洁的数组匹配语法,你可以用以下两种方法实现需求:
方法一:遍历数组元素逐个检查(推荐,处理带空格的元素更可靠)
这种方法会遍历数组中的每个元素,逐一判断是否匹配目标模式,适合精确匹配或简单的字符串包含检查:
# 定义数组 set a = (arun kumar input output pin port) # 初始化匹配标记 set match_found = 0 # 遍历数组每个元素 foreach elem ($a) # 精确匹配"varun",如果是包含匹配可以换成 `echo "$elem" | grep -q "varun"` if ("$elem" == "varun") then set match_found = 1 break # 找到匹配后提前退出循环 endif end # 根据标记输出结果 if ($match_found) then echo "Match found" endif
方法二:将数组转为字符串后用grep匹配
如果数组元素不含空格,可以把数组展开成空格分隔的字符串,通过grep批量检查:
set a = (arun kumar input output pin port) # 用grep的-q选项静默检查,不输出结果 echo "$a" | grep -q "varun" # CSH中$status保存上一条命令的退出状态,0表示成功匹配 if ($status == 0) then echo "Match found" endif
注意:如果数组元素包含空格,方法二会因为空格分割导致判断错误,此时优先用方法一。
内容的提问来源于stack exchange,提问作者varun kumar
相关产品推荐
相关产品推荐

