Bash:如何从env var运行命令并在进程名称中显示其值
我想在后台运行几个命令.为此,我在我的.bashrc文件中添加了一个函数,该函数在后台运行一个带有参数的命令,并为我想要的命令创建了一些别名.
这是我的.bashrc的一个片段: alias tkdiff="CMD=tkdiff; run_bg" alias meld="CMD=meld; run_bg" # Run command in background run_bg() { $CMD $@ & } 问题是,当我使用这些命令时,如果我运行jobs命令或其中一个进程完成,我所能看到的只是$CMD $@,而我无法看到实际运行的内容或运行完毕的内容. 例如: [ ***** ]$meld; meld; meld [1] 117438 [2] 117439 [3] 117440 [ ***** ]$jobs [1] Running $CMD $@ & [2]- Running $CMD $@ & [3]+ Running $CMD $@ & [ ***** ]$jobs [1] Done $CMD $@ [2]- Done $CMD $@ [3]+ Done $CMD $@ [ ***** ]$ 我尝试在没有函数的情况下设置它(别名meld =“meld $@&”),但后来我得到了缺少的参数.我尝试创建一个包含新var中所有内容的字符串,但后来我看到了新的var的名称.我尝试将其重定向到一个文件并将其作为脚本运行,但后来我看到了该文件的名称.我试过exec,但我得到了相同的结果.我尝试使用带参数的函数,但是我遇到了很多错误并没有结果(我可能做错了). 我知道我可以为每个命令编写一个函数,但这是一个糟糕的解决方案,我仍然认为参数为$@. 有没有办法看到变量的内容而不是他们的名字? 将Red Hat 6.0与GNOME 2.28.2一起使用.这是我的工作场所,所以我无法切换发行版或类似的东西. 谢谢! 解决方法
我找到了解决方案.这是代码:
alias tkdiff="run_bg /usr/bin/tkdiff" alias meld="run_bg /usr/bin/meld" # Run command in background run_bg { eval "$@ &" } Eval在运行之前将变量解引用为字符串,因此文本显示完整. 感谢所有试图帮助的人! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- osx – 如何在OS X El Capitan中禁用Bash会话
- angular2 错误集。
- angularjs – 在ui.router过渡到粘性状态时可以触
- Scala – 如何使用反射api获取字段的’type’
- 如何使用scala内部来比fsc(快速scala编译器)更快
- angularjs – 如何修复我的发电机角项目,使咕噜测
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字
- twitter-bootstrap-3 – Typeahead.js在Knockout
- angularjs开发部署流程
- Memcached source code analysis (threading mod