Shell基础——模式匹配

本文详细介绍了Shell中的模式匹配,包括基本规则和特殊字符的使用,如*、?和[...], 还讨论了扩展模式匹配,如?(pattern-list)、*(pattern-list)等,这些概念在文件名扩展、参数和变量扩展、条件表达式以及case语句中起着关键作用。" 128428564,16942543,Python+uniapp实现鲸落图书商城小程序设计与实现,"['Python', 'uni-app', '课程设计', '小程序开发', '数据库设计']

模式匹配的用处

  • 用在文件名扩展
$ ls fo*
fo0	foo
$ var="HelloWorld XXXX!"
$ echo ${var/XXX?/felix}
HelloWorld felix!
$ if [[ felix = f?lix ]]; then echo Hello; else echo "Who are you?"; fi
Hello
$ case felix in
>   f[aeiou]lix) echo Hello ;;
>   *) echo "Who are you?" ;;
> esac
Hello

模式匹配的规则

非特殊字符,匹配其本身。
NUL字符不能出现在模式里。
\用于转义特殊字符。
如果要在字面上去匹配特殊字符,则必须用引号。

模式匹配里的特殊字符

*

匹配任何字符串,包括null字符串。
在文件名扩展中,如果开启了globstar选项,**可以匹配所有的文件、文件夹和子文件夹。**/匹配所用的文件夹和子文件夹。

\?

匹配任意单个字符

[…]

匹配其中任何一个字符。
用连字符 - 分隔的一对字符表示范围表达式。 介于这两个字符(包括两个字符)之间的任何字符都将匹配。

$ [[ felix = f[a-z]lix ]] && echo matched
matched

范围表达式中字符的排序顺序由当前语言环境以及LC_COLLATE和LC_ALL变量(如果已设置)的值确定。在C语言环境里,[a-dx-z] 等同于[abcdxyz],但在以字典顺序排序字符的环境下,[a-dx-z] 等同于[aBbCcDdxXyYz]. 可以通过设置环境变量LC_COLLATE和LC_ALL为C, 或者开启globasciiranges选项,就能强制要求范围表达式按照C语言环境排序字符。

如果 [ 后的第一个字符是 ! 或 ^,则匹配所有未包含的字符。

$ [[ felix = f[!0-9]lix ]] && echo matched
matched

如果想匹配 -,就把它放在[ ]里的第一位或最后一位。如果想匹配 ],将其放在第一位。

[:class:]匹配指定字符集。POSIX标准定义了如下字符集:

alnum   alpha   ascii   blank   cntrl   digit   graph   lower
print   punct   space   upper   word    xdigit

例如字word符集匹配字母,数字和字符_

[=c=]匹配与字符c具有同等collation weight的字符
[.symbol.]匹配collating symbol

扩展的模式匹配

如果使用shopt命令开启了extglob选项,可以使用下面列举的扩展模式匹配运算符。在这些运算符里,pattern-list是用 | 分隔的模式列表。可以用这些运算符将模式组合成复合模式。

?(pattern-list)

匹配零个或一个模式

*(pattern-list)

匹配零个、一个或多个模式

+(pattern-list)

匹配一个或多个模式

@(pattern-list)

匹配一个模式

!(pattern-list)

匹配零个模式

针对长字符串的复杂扩展模式匹配速度很慢,尤其是当模式包含alternations且字符串包含多个匹配项时。 对较短的字符串使用单独的匹配项,或者使用字符串数组而不是单个长字符串,可能会更快。

### 腾讯云国际站是否存在骗局或相关问题 腾讯云国际站作为腾讯云针对海外市场的服务站点,其运营模式与国内站有所不同。以下是关于腾讯云国际站是否存在骗局或相关问题的详细分析: #### 1. 合规性与合法性 腾讯云国际站提供的服务遵循当地法律法规[^1]。服务器位于国外,遵守的是所在国家或地区的规则,因此无需进行实名认证和备案。这种机制本身是合法且合规的,只要用户按照要求使用服务,不存在所谓的“骗局”。 #### 2. 风控与限制 虽然腾讯云国际站提供了更多的灵活性(如免实名、免备案),但并不意味着完全没有风控措施。如果用户的行为违反了服务条款或触发了异常检测机制,可能会导致账号被冻结或其他限制措施[^2]。因此,建议用户在使用过程中严格遵守服务协议。 #### 3. 用户反馈与评价 根据现有信息,腾讯云国际站的用户反馈总体较为正面。许多外贸客户选择将其业务迁移到国际站,主要是因为其海外节点资源丰富,能够更好地对接国际市场[^1]。然而,也有部分用户反映,在注册或充值过程中可能遇到一定困难,这通常与支付方式(如PayPal)或网络环境有关[^2]。 #### 4. 注意事项 - **注册流程**:建议使用境外手机号和邮箱进行注册,以减少被风控的可能性。 - **支付方式**:推荐使用PayPal或其他国际通用支付工具,避免因支付问题导致账户异常。 - **内容合规**:尽管国际站对内容的限制较少,但仍需确保上传的内容符合当地法律,以免引发不必要的麻烦。 ### 示例代码:检查腾讯云国际站服务器状态 以下是一个简单的Python脚本,用于检查腾讯云国际站服务器的状态: ```python import requests def check_server_status(url): try: response = requests.get(url, timeout=10) if response.status_code == 200: return "Server is up and running." else: return f"Server returned status code: {response.status_code}" except requests.exceptions.RequestException as e: return f"An error occurred: {e}" # 替换为实际的腾讯云国际站URL url = "https://intl.cloud.tencent.com" print(check_server_status(url)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值