【问题标题】:change working directory from csh script从 csh 脚本更改工作目录
【发布时间】:2015-01-25 10:23:31
【问题描述】:

我想查找正在运行的进程的一些数据,实际上我是在从暂存目录中搜索对应的作业 ID。我设法通过以下命令手动执行此操作(假设作业 ID 为 12345):

find ~ -name '12345.out'

这会根据作业找到输出文件:

/home/username/somefolder/12345.out

暂存目录被写入该文件夹中名为 .scrdir 的文件,所以

cd | cat /home/username/somefolder/.scrdir

带我去我想去的地方。

我现在想将它与我的 .cshrc 中的 csh 脚本或某个别名结合起来。


到目前为止我的尝试:

#/bin/csh

set jobfile = `find ~ -name $argv[1].out`
set jobdir = `dirname $jobfile`
set scrdir = `cat $jobdir/.scrdir`
echo $scrdir

其中第一个参数值是作业 ID,例如 12345此脚本打印正确的暂存目录,但我希望它在调用脚本后将我的实际工作目录更改为暂存目录。如何从 csh 脚本中更改工作目录?


我也将不胜感激任何改进问题/-标题的建议。

【问题讨论】:

  • 我不清楚你到底想要什么,或者你的问题到底是什么。我想你已经有一个(非工作)尝试?您可能应该将此添加到您的问题中,因为这可能会更清楚您的问题所在。
  • 尝试使用pushdpopd 更改目录,但是当脚本结束时,目录堆栈会重置。 (显然每个子shell都有自己的目录栈。)

标签: csh argv cd backticks


【解决方案1】:

由于csh中没有shell函数,所以我找到的唯一解决方案是用source调用脚本。

脚本:

#/bin/csh

set jobfile = `find ~ -name $argv[1].out`
set jobdir = `dirname $jobfile`
set scrdir = `cat $jobdir/.scrdir`
cd $scrdir

调用脚本:

source myscript.sh

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-01
    • 2010-11-28
    • 2021-11-24
    • 2010-10-13
    • 2017-09-03
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多