gnome-terminal не открывает вкладки правильно из моего скрипта

gnome-terminal не открывает вкладки правильно из моего скрипта

У меня есть скрипт для запуска терминала gnome с несколькими вкладками. Вкладки открываются на основе списка каталогов, перечисленных в .tabsфайле, которые находятся в том же каталоге, что и скрипт.

Я создаю строку с несколькими --tabs --working-directory /some/dirвкладками для каждой строки в файле вкладок.

прежде чем запустить команду, я вывожу ее в консоль. затем я ее запускаю. Проблема в том, что gnome открывает вкладки, но не открывает каждую из них в своем рабочем каталоге. Однако, если я копирую и вставляю то, что я напечатал в консоль, все работает отлично. не могу понять почему.

вот сценарий:

#!/bin/bash 

SCRIPT_DIR=$(dirname $(readlink -f $0))
declare -a profiles_list=()
while [[ "$1" != "" ]]
do
        profiles_list+=($1)
        shift
done

if [[ ${#profiles_list[@]} -eq 0 ]]
then
        profiles_list+=("TERM_DEFAULT")
fi

TERM_LIST_PARAM=""

for profile in ${profiles_list[@]}
do
        file="${SCRIPT_DIR}/${profile}.tabs"
        if [[ ! -f $file ]]
        then
                echo $file does not exists
        fi
        while read tab
        do
                tab_line="--tab --working-directory='${tab}'"
                TERM_LIST_PARAM="$tab_line $TERM_LIST_PARAM"
        done < $file
done
echo gnome-terminal ${TERM_LIST_PARAM}
gnome-terminal -v ${TERM_LIST_PARAM}
echo $?
exit 0

решение1

Используйте массивы для хранения отдельных аргументов. Использование строк сбивает оболочку с толку, когда она позже пытается разделить их по пробелам.

TERM_LIST_PARAM=( )

С последующим,

tab_line=( --tab --working-directory="$tab" )
TERM_LIST_PARAM=( "${tab_line[@]}" "${TERM_LIST_PARAM[@]}" )  # or: TERM_LIST_PARAM+=( "${tab_line[@]}" )

Затем,

gnome-terminal -v "${TERM_LIST_PARAM[@]}"

Кроме того, в коде необходимо использовать двойные кавычки $0, $1, $file, и ${profiles_list[@]}, иначе возникнут проблемы, как только любое из этих значений будет содержать пробелы и/или символы подстановки.

Смотрите также:

решение2

судя по всему, одинарные кавычки вокруг каталога мешают работе gnome-terminal внутри скрипта. их удаление решило проблему.

Связанный контент