У меня есть этот простой скрипт:
#!/usr/bin/env bash
eval "${@:2}"
while [ true ]
do
FocusApp=`xdotool getwindowfocus getwindowname`
if [[ "$FocusApp" == *"$1"* ]];
then
wmctrl -ir $(xdotool getactivewindow) -b add,maximized_vert,maximized_horz
break
fi
done
Я запускаю его так:
$ ./maximize.sh "Sublime Text" /usr/bin/subl -n "./My File With Spaces in the Name"
Но когда я его запускаю, Sublime Text
пытается открыть файл с именем My
, другой с именем File
и т. д. Если я заменим eval "${@:2}"
на:
eval "\"$2\" \"$3\" \"$4\" \"$5\" \"$6\" \"$7\" \"$8\""
Затем Sublime Text правильно откроет файл "./My File With Spaces in the Name"
.Как заставить eval
правильно понимать все кавычки аргументов с переменным числом аргументов командной строки, т. Е. Без жесткого кодирования "\"$2\" \"$3\" \"$4\" ..."
?