2015-11-17 53 views
1

命令失败通过bash -c命令失败,但工程直接

bash -c 'sudo lspci -vvv | awk \'/System peripheral/ {portn=$1} /Status:/ {split($3,a,"M");printf "%s\n",a[1]}\'' 

-bash:语法错误附近意外的标记'(”

同样的命令工作得很好,如果运行直接在控制台sudo lspci -vvv | awk '/System peripheral/ {portn=$1} /Status:/ {split($3,a,"M");printf "%s\n",a[1]}'

如何覆盖“(”在bash的命令字符串-c?

回答

3

你无法逃避单屈内单引号otes那样。这是行不通的。

你的命令被视为

sudo lspci -vvv | awk /System peripheral/ {portn=$1} /Status:/ {split($3,a,"M");printf "%s\n",a[1]} 

其失败。

要在单引号字符串中放置单引号,您需要使用'\''

所以你的命令变为:

bash -c 'sudo lspci -vvv | awk '\''/System peripheral/ {portn=$1} /Status:/ {split($3,a,"M");printf "%s\n",a[1]}'\'