You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下修复bash词典脚本:批量打开波兰语词条Firefox标签页

修复Bash脚本以按顺序在Firefox新标签页打开diki.pl词典页面

修复后的基础版脚本

#!/bin/bash

# 逐行读取波兰语词条文件
while IFS= read -r word; do
    # 跳过空行,避免无效请求
    [[ -z "$word" ]] && continue
    # 对词条做URL编码,处理特殊字符(比如空格、波兰语变音符号)
    encoded_word=$(printf "%s" "$word" | xxd -plain | tr -d '\n' | sed 's/\(..\)/%\1/g')
    # 拼接正确的diki.pl词典查询URL
    url="https://www.diki.pl/slownik-polskiego-jezyka?q=$encoded_word"
    # 在Firefox新标签页打开URL,后台运行避免阻塞
    firefox --new-tab "$url" &
    # 短暂延迟保证标签页按顺序打开(可根据网络情况调整0.3这个数值)
    sleep 0.3
done < lst-pl_wrds.txt

关键修复点说明

  • URL编码修复:原脚本直接拼接未编码的波兰语词条,特殊字符会导致URL失效。这里用xxd和sed实现标准URL编码,确保词条能被diki.pl正确识别。
  • 标签页顺序修正:通过后台运行firefox命令+短暂sleep,避免进程调度打乱打开顺序,保证标签页和文件中词条顺序一致。
  • 移除无效语法与多余文件:原脚本误用了Windows的timeout命令和nul重定向(Unix系统不存在这些),改用Unix原生sleep命令,彻底解决多余文件生成问题。
  • 空行过滤:新增空行判断逻辑,跳过文件中的无效空条目。

更高效的Unix特有方案

如果不想依赖sleep延迟,可以一次性将所有URL传递给Firefox,Firefox会按数组顺序批量创建标签页,只启动一次进程:

#!/bin/bash

# 用数组存储所有生成的URL
urls=()
while IFS= read -r word; do
    [[ -z "$word" ]] && continue
    encoded_word=$(printf "%s" "$word" | xxd -plain | tr -d '\n' | sed 's/\(..\)/%\1/g')
    urls+=("https://www.diki.pl/slownik-polskiego-jezyka?q=$encoded_word")
done < lst-pl_wrds.txt

# 一次性打开所有URL,标签页顺序严格匹配文件词条顺序
firefox "${urls[@]}"

内容的提问来源于stack exchange,提问作者poszkodowany

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 10:58:12