ОШИБКА специального символа и анализа - Bashscript

ОШИБКА специального символа и анализа - Bashscript
Failed to parse arguments: Argument to "--command/-e" is not a valid command: Text ended before matching quote was found for ". (The text was '"cpulimit')

вот что я получаю, когда запускаю следующий скрипт в терминале

    #!/bin/bash
read -p "Which program u want to limit its processes?" ProgrameName
read -p "Which limitation percentage u want for it ?" limitationPercentage  

getAllPIDRunUnderThisProgram=$( ps -e | grep "$ProgrameName" | awk '{print $1;}')
for i in $getAllPIDRunUnderThisProgram
   do
    gnomeTab+="  --tab -e \"cpulimit -p $i -l $limitationPercentage \" "  
   done

gnome-terminal $gnomeTab

он не может проанализировать экранированный символ "\", который должен быть использован из-за двойных кавычек в строке 8 gnomeTab+=" --tab -e \"cpulimit -p $i -l $limitationPercentage \" ", так есть ли решение использовать двойные кавычки, поскольку они обязательны для использования после --tab -e " some commands "и не вызывают проблем с синтаксическим анализом?

решение1

Вы можете изменить самую первую строку на

#!/bin/bash -xv

чтобы оболочка показала вам, как она интерпретирует аргументы.

Вместо экранирования (что приводит к eval), следует использовать массивы для накопления опций:

for i in $getAllPIDRunUnderThisProgram ; do
    gnomeTab+=(--tab -e "cpulimit -p $i -l $limitationPercentage")  
done

echo "${gnomeTab[@]}"

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