【发布时间】:2019-08-22 03:24:12
【问题描述】:
"Test whether a glob has any matches in bash"这个问题的答案很好。
但是,我想知道如何测试一个 glob 在 bash 中是否有只有一个匹配项,以及是否存在分配给一个变量。
我该怎么做?
【问题讨论】:
-
你想用
'*'匹配什么?文件,其他东西的列表?喜欢cnt=0; for i in *; do myvar="$i"; ((cnt++)); done; [ "$cnt" -ne 1 ] && unset myvar?然后你可以简单地测试[ -n "$myvar" ] && echo "only match was '$myvar'"? -
@DavidC.Rankin 在这个解决方案中,如果 glob 什么都不匹配,它只会有一个等于 glob 的结果。热的要解决吗?
-
好收获。
[ "$cnt" -eq 0 ] || [ "$cnt" -ne 1 ] && unset myvar(见编辑) -
你的 glob 表达式是什么?就是
*还是你有具体的表达方式 -
更多的可能性是具体的表达方式。
*或特定表达式有什么区别? @Inian