【问题标题】:open new tab in current window using shell script使用 shell 脚本在当前窗口中打开新选项卡
【发布时间】:2023-04-04 03:50:01
【问题描述】:

我正在使用 centos Linux。我想从名为“myscript”的脚本文件在当前窗口终端中打开一个新选项卡。我使用以下脚本

#!/bin/bash
WID=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)"| awk '{print $5}')
xdotool windowfocus $WID # line 5
xdotool key ctrl+shift+t #line 6
wmctrl -i -a $WID # line 7

来自此链接Open a new tab in gnome-terminal using command line。我以这种方式运行脚本source myscript,我得到一个错误说Illegal variable name。如何解决这个问题? 笔记!我不想在新窗口中打开新标签。

【问题讨论】:

  • 你用的是什么外壳? cshtcsh?
  • @etan 我怎么知道?
  • echo "$0" 说什么? declare -p SHELL 说什么?我猜答案是tcshcshdeclare: Command not found. 这将表明您正在使用tcsh/csh 并且该脚本用于bash。如果你以./script.sh 运行它,它甚至可以从tcsh 运行,但在直接运行或源代码运行时不会。
  • echo "$0" 给出/bin/tcshdeclare -p SHELL 给出declare: Command not found. running ./myscript 给出:./myscript: line 5: xdotool: command not found ./myscript: line 6: xdotool: command not found ./myscript: line 7: wmctrl: command not found
  • 那是tcsh,就像我猜的那样。您是否安装了xdotoolwmctrl,因为它看起来不像。这些错误表明以这样的方式运行它已经解决了您遇到的Illegal variable name 问题(因为它使用shebang 行中的/bin/bash 运行)但是由于脚本使用的命令不可用而遇到了麻烦。

标签: linux shell tabs


【解决方案1】:

问题在于 $(commands) 语句。 尝试使用 `` 代替:

set WID=`xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)"| awk '{print $5}'`
xdotool windowfocus $WID
xdotool key ctrl+shift+t
wmctrl -i -a $WID

【讨论】:

  • 我收到了xdotool: Command not found. xdotool: Command not found. wmctrl: Command not found.
  • 是的,csh/tcsh 支持旧的反引号命令替换语法,因此这将“修复”该问题。但是首先使用 tcsh 已经是一个“问题”,因为它试图为脚本使用错误的 shell。
猜你喜欢
  • 1970-01-01
  • 2015-07-26
  • 2014-02-02
  • 1970-01-01
  • 1970-01-01
  • 2016-03-10
  • 1970-01-01
  • 2012-10-09
  • 1970-01-01
相关资源
最近更新 更多