2015-01-25 7 views
1

Я хочу найти некоторые данные о запущенных процессах, фактически, я ищу каталог с нуля для соответствующего идентификатора задания. Мне удалось сделать это вручную с помощью следующих команд (предполагается, что на работу ID-12345):изменить рабочий каталог из сценария csh

find ~ -name '12345.out' 

Это находит выходной файл в соответствии с работой:

/home/username/somefolder/12345.out 

каталог царапанию написанном файл с именем .scrdir в этой папке, поэтому

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

приносит меня туда, где я хочу.

теперь я хочу объединить, что в CSH сценарий или какой-либо псевдоним в моем .cshrc.


Мой atempt до сих пор:

#/bin/csh 

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

, где первое значение аргумента является работа-ID, например, 12345 Этот скрипт печатает правый каталог с нуля, но я хочу, чтобы он изменил мой фактический рабочий каталог на каталог с нуля после того, как я вызвал скрипт. Как изменить рабочий каталог из сценария csh?


Я также был бы признателен за любые рекомендации по улучшению вопроса/-title.

+0

Это не entirly мне ясно, что именно вы хотите, или то, что именно ваша проблема. Я думаю, что у вас уже есть (нерабочая) попытка? Вероятно, вы должны добавить это в свой вопрос, поскольку это, вероятно, станет более ясным, где ваши проблемы или проблемы. – Carpetsmoker

+0

Попытался изменить каталог с помощью 'pushd' и' popd', но когда скрипт заканчивается, стек каталога сбрасывается. (Очевидно, каждая подоболочка приносит свой собственный стек каталогов). – tmartin

ответ

1

Поскольку в csh нет функций оболочки, единственным решением, которое я нашел, является вызов сценария с source.

Сценарий:

#/bin/csh 

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

Для вызова скрипта:

source myscript.sh 

 Смежные вопросы

  • Нет связанных вопросов^_^