首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash脚本特殊字符和后台作业错误

Bash脚本特殊字符和后台作业错误
EN

Ask Ubuntu用户
提问于 2014-09-16 09:14:58
回答 2查看 332关注 0票数 0
代码语言:javascript
复制
gnome-terminal --tab -e "
sh -c '
 gedit'/media/ubuntuman/Onces And for Al/scripts/faceBook' & ;
 sudo cpulimit -e ubuntu-tweak -l 80;'"

这是我想编辑的一段代码。'中的特殊字符sh -c (单引号)将与gedit的单引号发生冲突,如何解决?

我还发现,如果我在后台运行第一个作业,终端就不会执行sudo cpulimit bla的第二个作业。为什么?

EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2014-09-16 09:48:23

请尝试以下命令,它应该启动两个作业:

代码语言:javascript
复制
gnome-terminal --tab -e "
sh -c '
 (gedit /media/ubuntuman/Onces\ And\ for\ Al/scripts/faceBook &) ;
 sudo cpulimit -e ubuntu-tweak -l 80;'"

括号表示bash中的子subshell。引用手册页:

代码语言:javascript
复制
   (list) list is executed in a subshell environment (see  COMMAND  EXECU‐
          TION  ENVIRONMENT below).  Variable assignments and builtin com‐
          mands that affect the  shell's  environment  do  not  remain  in
          effect  after  the  command completes.  The return status is the
          exit status of list.
票数 1
EN

Ask Ubuntu用户

发布于 2014-09-16 10:11:35

由于您在文件名中没有使用任何特殊字符(即,对于shell来说是特殊的)字符,而且您没有给出任何进一步的命令,所以您可以使用-x选项并删除shell的周围引号:

代码语言:javascript
复制
gnome-terminal --tab -x bash -c \
   'gedit "/media/ubuntuman/Onces And for Al/scripts/faceBook" & \
    sudo cpulimit -e ubuntu-tweak -l 80'

请注意,&不需要后面跟着一个;

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/524627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档