检查变量是否包含特定的文本字符串bash

时间:2019-02-11 17:28:02

标签: bash macos text-processing

我想检查$url之后的任何地方v=的内容中是否包含https://youtube.com/watch?

示例输出(注意v=的当前和缺失实例)

> https://youtube.com/watch?list=PL3O9DAQHAxSTXqOH5VV6DO0BBupZ4feqz&v=apdJBcDF6vA&index=2
URL allowed.

> https://youtube.com/watch?list=PL3O9DAQHAxSTXqOH5VV6DO0BBupZ4feqz&index=2
URL NOT allowed.

> https://youtube.com/watch?v=apdJBcDF6vA
URL allowed.

> https://youtube.com/v=apdJBcDF6vA
URL NOT allowed.

> https://youtube.com/watch?v=apdJBcDF6vA&list=PL3O9DAQHAxSTXqOH5VV6DO0BBupZ4feqz&index=2
URL allowed.

> https://youtube.com/watch?v=apdJBcDF6vA&list=PL3O9DAQHAxSTXqOH5VV6DO0BBupZ4feqz
URL allowed.

> https://youv=tube.com/watch?v=apdJBcDF6vA
URL NOT allowed.

> v=https://youtube.com/watch?v=apdJBcDF6vA
URL NOT allowed.

我会尝试一些代码进行测试,但老实说,我不确定该使用什么。

OS是macOS High Sierra 10.13.6,bash版本是3.2.57(1)-发行版

2 个答案:

答案 0 :(得分:1)

在双方括号中,==运算符支持glob:

if [[ $url == 'https://youtube.com/watch?'*v=* ]]

答案 1 :(得分:1)

如果您要获取视频ID,则使用正则表达式即可轻松实现。请参见How do I get the YouTube video ID from a URL?或尝试使用Google搜索“正则表达式以获取youtube视频ID”

如果您不知道,请考虑使用youtube-dl的各个部分,它们可以解析每个可能的URL,并具有执行许多操作的更多工具。