我收到了另一个人编写的脚本,并被要求根据他们的需要进行修改。有一行需要修改:
if [ "$user" == "nobody" ]
这需要扩展以包括以字母 p、u 和 z 开头的其他用户。在字母之后,所有用户帐户都是随机数字序列,即p33783201
。我已经在谷歌上搜索了几个小时,但我的缺乏理解开始让我感到困惑。
谢谢!
我收到了另一个人编写的脚本,并被要求根据他们的需要进行修改。有一行需要修改:
if [ "$user" == "nobody" ]
这需要扩展以包括以字母 p、u 和 z 开头的其他用户。在字母之后,所有用户帐户都是随机数字序列,即p33783201
。我已经在谷歌上搜索了几个小时,但我的缺乏理解开始让我感到困惑。
谢谢!
在正则表达式中,“字母 p、u 或 z”是
[puz]
,数字是[0-9]
,数字序列通常是[0-9]+
(一个或多个)(如果您使用支持它的正则表达式语法)或[0-9][0-9]*
(零- 或更多)如果你被迫使用 POSIX Basix Regex 而不是。最后添加^...$
要求完整匹配(将匹配锚定到字符串的开头和结尾,而不是仅在其中的任何位置)。当您使用bash标记问题时,假设它是一个
#!/usr/bin/env bash
脚本,您可以使用 Bash 及其[[
正则表达式匹配运算符=~
(使用 POSIX 扩展正则表达式语法):如果它不是 Bash 而是
#!/bin/sh
“POSIX shell”脚本,您可以使用expr
相同的任务(仅限于正则表达式的 POSIX Basic 方言并且没有+
):或者甚至是 grep(如果性能不是一个大问题的话,或者其他 20 多个支持正则表达式的工具之一):
注意
[
应该使用单个=
,尽管 shell 经常接受==
。