代码之家  ›  专栏  ›  技术社区  ›  Geodesic

bash重定向帮助

  •  0
  • Geodesic  · 技术社区  · 14 年前

    在运行一个非常简单的bash脚本时,我遇到了一个小问题。

    工作的部分:

    qstat -f $queuenum | grep -Po '(?<=PBS_O_WORKDIR=).*(?=,)' 
    

    将目录输出到屏幕(例如):

    /short/h72/sio2/defected/2-999/3-力/力

    我只想把目录改成这个文件夹。将“cd”附加到上述命令的末尾不起作用,我也不太清楚如何使用$(())标记。

    任何帮助都将不胜感激。

    3 回复  |  直到 14 年前
        1
  •  2
  •   Oliver Charlesworth    14 年前
    cd `qstat -f $queuenum | grep -Po '(?<=PBS_O_WORKDIR=).*(?=,)' `
    
        2
  •  1
  •   Sanjay Manohar    14 年前

    调用脚本将创建一个新的 bash

    当脚本结束时,此shell将被销毁。

    如果你使用 exec <scriptname> 运行脚本,新的 猛击 用外壳代替当前外壳。所以如果添加命令 猛击 在剧本的结尾,你会得到你想要的,但不是一样的 猛击 壳牌。

        3
  •  0
  •   codaddict    14 年前

    你应该使用:

    cd "$(qstat -f $queuenum | grep -Po '(?<=PBS_O_WORKDIR=).*(?=,)' )"
    

    您试图通过使用以下两种语法之一来实现命令替换:

    $(command)
    

    或者像这样使用倒计时:

    `command` 
    

    第一种是首选的方法,因为它允许嵌套命令替换,比如:

    foo=$(command1 | command2 $(command3))
    

    另外,如果命令替换的结果是一个带空格的字符串,那么应该用双引号将整个命令替换括起来以保护您。