carácter especial y error de análisis - Bashscript

carácter especial y error de análisis - 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')

esto es lo que obtengo cuando ejecuto el siguiente script en la terminal

    #!/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

No puede analizar el carácter de escape "\" que debe usarse debido a las comillas dobles en la línea 8 gnomeTab+=" --tab -e \"cpulimit -p $i -l $limitationPercentage \" ", entonces, ¿existe una solución para usar las comillas dobles, ya que son obligatorias después --tab -e " some commands "y no generan el problema del análisis? ?

Respuesta1

Puedes cambiar la primera línea a

#!/bin/bash -xv

para hacer que el shell le muestre cómo interpreta los argumentos.

En lugar de escapar (lo que lleva a eval), deberías usar matrices para acumular opciones:

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

echo "${gnomeTab[@]}"

información relacionada