从csh脚本更改工作目录

从csh脚本更改工作目录,csh,argv,cd,backticks,Csh,Argv,Cd,Backticks,我想查找一些正在运行的进程的数据,实际上我正在搜索对应作业ID的临时目录。我通过以下命令(假设作业ID为12345)手动完成了此操作: 这将根据作业查找输出文件: /home/username/somefolder/12345.out scratch目录被写入该文件夹中名为.scrdir的文件,因此 cd | cat /home/username/somefolder/.scrdir 把我带到我想去的地方 现在,我想将其与.cshrc中的csh脚本或某个别名结合起来 到目前为止,我的ate

我想查找一些正在运行的进程的数据,实际上我正在搜索对应作业ID的临时目录。我通过以下命令(假设作业ID为12345)手动完成了此操作:

这将根据作业查找输出文件:

/home/username/somefolder/12345.out
scratch目录被写入该文件夹中名为.scrdir的文件,因此

cd | cat /home/username/somefolder/.scrdir
把我带到我想去的地方

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


到目前为止,我的atempt:

#/bin/csh

set jobfile = `find ~ -name $argv[1].out`
set jobdir = `dirname $jobfile`
set scrdir = `cat $jobdir/.scrdir`
echo $scrdir
其中第一个参数值是作业ID,例如12345。此脚本打印正确的临时目录,但我希望它在调用脚本后将我的实际工作目录更改为临时目录。如何从csh脚本中更改工作目录



如果您能给我一些建议来完善这个问题,我将不胜感激。

因为csh中没有shell函数,所以我找到的唯一解决方案是使用
源代码调用脚本

剧本:

#/bin/csh

set jobfile = `find ~ -name $argv[1].out`
set jobdir = `dirname $jobfile`
set scrdir = `cat $jobdir/.scrdir`
cd $scrdir
source myscript.sh
要调用脚本,请执行以下操作:

#/bin/csh

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

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