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

Linux Mint下调整脚本逻辑:实现A或(B执行后再执行C)

脚本逻辑调整与问题解决

需求说明

当前脚本逻辑为A or B then C,需修改为A or (B then C),即仅在执行B分支(A执行失败时)时才运行C操作,执行A分支时不触发C。其中:

  • A:wmctrl -a 'To Do List - Google Sheets'(激活已有表格窗口)
  • B:google-chrome --new-window https://docs.google.com/spreadsheets/d/1Oh7XWRTWoy5izkz4eV6G7vRKgdwNeZa_NW-VCdR5GUk/edit#gid=0(打开新表格窗口)
  • C:xdotool key F11(切换Chrome全屏,因--start-fullscreen在Linux Mint 20.3无效)

错误尝试的命令

命令1:

sh -c [["wmctrl -a 'To Do List - Google Sheets' || (google-chrome --new-window https://docs.google.com/spreadsheets/d/1Oh7XWRTWoy5izkz4eV6G7vZKgdwNeZa_NW-VCdR5GUk/edit#gid=0 && xdotool key F11)]]

问题:sh -c后未用引号包裹命令字符串,且[[ ]]是Bash专属语法,sh环境不兼容。

命令2:

sh -c "wmctrl -a 'To Do List - Google Sheets' || "(google-chrome --new-window https://docs.google.com/spreadsheets/d/1Oh7XWRTWoy5izkz4eV6G7vRKgdwNeZa_NW-VCdR5GUk/edit#gid=0 && xdotool key F11)"

问题:引号嵌套错误,外层双引号内的未转义双引号导致语法解析失败。

正确解决方案

要实现**A || (B && C)**的逻辑优先级,需正确处理命令字符串的引号与语法:

方案1(兼容sh环境):

sh -c 'wmctrl -a "To Do List - Google Sheets" || (google-chrome --new-window "https://docs.google.com/spreadsheets/d/1Oh7XWRTWoy5izkz4eV6G7vRKgdwNeZa_NW-VCdR5GUk/edit#gid=0" && xdotool key F11)'

方案2(指定Bash执行,更稳定):

bash -c 'wmctrl -a "To Do List - Google Sheets" || (google-chrome --new-window "https://docs.google.com/spreadsheets/d/1Oh7XWRTWoy5izkz4eV6G7vRKgdwNeZa_NW-VCdR5GUk/edit#gid=0" && xdotool key F11)'

关键说明

  • 用单引号包裹-c后的整个命令内容,避免内部双引号被Shell提前解析
  • 括号(...)明确将B和C绑定为一个逻辑单元,确保只有A执行失败时,才会依次运行B和C
  • 此写法保证xdotool key F11仅在打开新Chrome窗口的分支触发,后续运行脚本时,只要A成功激活已有窗口,就不会执行全屏切换操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:01:18