我遇到一个小问题,正在运行一个非常简单的bash脚本。
正在运作的部分:
qstat -f $queuenum | grep -Po '(?<=PBS_O_WORKDIR=).*(?=,)'
将目录输出到屏幕(例如):
/短路/ H72 /二氧化硅/缺陷/ 2〜999/3-力/ FORCES_364
我想要做的就是将目录更改为此文件夹。在上面命令的末尾添加“| cd”不起作用,我也无法弄清楚如何使用$(())标记。
任何帮助都将不胜感激。
答案 0 :(得分:2)
cd `qstat -f $queuenum | grep -Po '(?<=PBS_O_WORKDIR=).*(?=,)' `
答案 1 :(得分:1)
调用您的脚本会创建一个新的bash
shell
脚本结束时会销毁此shell。
如果您使用exec <scriptname>
来运行脚本,则新的bash
shell将替换当前的shell。因此,如果您在脚本末尾添加命令bash
,您将得到您想要的,但不是相同的bash
shell。
答案 2 :(得分:0)
您应该使用:
cd "$(qstat -f $queuenum | grep -Po '(?<=PBS_O_WORKDIR=).*(?=,)' )"
您正在尝试通过使用以下两种语法之一来实现命令替换:
$(command)
或像这样使用反引号:
`command`
第一种方法是首选方式,因为它允许嵌套命令替换,例如:
foo=$(command1 | command2 $(command3))
如果命令替换的结果是带空格的字符串,你应该用双引号括起整个命令替换来保护你。