从csh脚本更改工作目录

时间:2015-01-25 10:23:32

标签: csh argv cd backticks

我想查找正在运行的进程的一些数据,实际上我正在搜索临时目录到相应的作业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脚本中更改工作目录?


我也很感激任何改进问题/ -title的建议。

1 个答案:

答案 0 :(得分: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