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
相关产品推荐
相关产品推荐

