如何在bash脚本中实现仅匹配指定URL时才运行对应函数?
需求实现方案
核心思路
通过获取Chromium当前激活标签页的真实URL,和目标地址https://github.com/login做精准匹配,匹配成功才执行自动输入逻辑,否则跳过。
方案一:远程调试接口匹配(推荐,准确率100%)
前置配置
修改你的Chromium启动参数,增加远程调试端口配置(仅本地可访问,无安全风险):
chromium --remote-debugging-port=9222
需要提前安装json解析工具jq:
# Debian/Ubuntu 系 apt install -y jq # RHEL/CentOS 系 dnf install -y jq
完整脚本代码
#!/bin/bash # 定义匹配的目标登录页 TARGET_URL="https://github.com/login" # 拉取当前浏览器所有标签页信息,提取当前激活页面的URL CURRENT_URL=$(curl -s http://localhost:9222/json | jq -r '.[] | select(.type == "page" and .active == true) | .url') # 精准匹配URL,匹配成功才执行自动登录逻辑 if [ "$CURRENT_URL" = "$TARGET_URL" ]; then DISPLAY=:0.0 xdotool type $WUSER DISPLAY=:0.0 xdotool key Tab DISPLAY=:0.0 xdotool type $DECPASS DISPLAY=:0.0 xdotool key Return fi
该方案和你提到的"matches": ["https://github.com/login"]规则效果完全一致,仅当URL精准匹配时才触发逻辑。
方案二:窗口标题匹配(无侵入,准确率稍低)
如果不想修改浏览器启动参数,可以通过匹配当前激活窗口的标题实现,GitHub登录页固定标题为Sign in to GitHub · GitHub:
#!/bin/bash # 目标页面标题关键词 TITLE_KEYWORD="Sign in to GitHub" # 获取当前激活窗口的标题 CURRENT_TITLE=$(xprop -id $(xdotool getactivewindow) | grep 'WM_NAME' | awk -F '"' '{print $2}') # 匹配标题关键词 if [[ "$CURRENT_TITLE" == *"$TITLE_KEYWORD"* ]]; then DISPLAY=:0.0 xdotool type $WUSER DISPLAY=:0.0 xdotool key Tab DISPLAY=:0.0 xdotool type $DECPASS DISPLAY=:0.0 xdotool key Return fi
该方案无需修改浏览器配置,但如果有其他页面标题包含对应关键词会出现误触发。
内容的提问来源于stack exchange,提问作者Faiz
相关产品推荐
相关产品推荐

