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

问题描述 投票:0回答:2

我想检查是否$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.

我会尝试一些代码来测试,但老实说,我不知道用什么。

操作系统是MacOS的高塞拉利昂10.13.6和bash版本是3.2.57(1)-release

bash macos text-processing
2个回答
1
投票

内双括号中,==运营商支持的水珠:

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

1
投票

如果你想要的是获得视频ID,这是相当简单的事情,实现了正则表达式。见How do I get the YouTube video ID from a URL?或尝试google搜索“正则表达式来获得YouTube视频ID”

如果你不知道的话,可以考虑使用youtube-dl的部分,他们可以分析每一个可能的网址,并有更多的工具做很多事情。

© www.soinside.com 2019 - 2024. All rights reserved.