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
让 shell 向您展示它如何解释参数。
您不应该使用转义(这会导致eval
),而应该使用数组来累积选项:
for i in $getAllPIDRunUnderThisProgram ; do
gnomeTab+=(--tab -e "cpulimit -p $i -l $limitationPercentage")
done
echo "${gnomeTab[@]}"