2015-07-13 3 views
0

Я использую 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. Как это исправить? Примечание! Я не хочу открывать новые вкладки в новом окне.

+0

Какую оболочку вы используете? 'csh' или' tcsh'? –

+0

@etan Как я могу это знать? –

+0

Что означает 'echo '$ 0" 'say? Что говорит 'declare -p SHELL'? Я предполагаю, что ответы - это 'tcsh' или' csh' и 'declare: Command not found.', которые укажут, что вы используете' tcsh'/'csh', и этот скрипт для bash. Если вы запустите его как './Script.sh', он должен работать даже с' tcsh', но не будет запускаться напрямую или из источника. –

ответ

1

Проблема заключается в заявлении $ (). Попробуйте использовать `` вместо этого:

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

Я получил 'xdotool: Command не найден. xdotool: Команда не найдена. wmctrl: команда не найдена. –

+0

Да, 'csh' /' tcsh' поддерживает старый синтаксис подстановки команды backtick, поэтому это «исправит» эту проблему. Но использование 'tcsh' в первую очередь уже является« проблемой », поскольку-пытается использовать неправильную оболочку для скрипта. –

Смежные вопросы