Betik dosyaları ile ilgili bir sorun

Başlatan maydin95, 14 Ocak 2012 - 13:37:12

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

maydin95

Merhabalar,

Benim sorunum şu: Ben
mcnp n=lif01
komutuyla mcnp programı lif01 dosyasını çalıştırıyor. Ve oradan da lif01o ve lif01r adında iki dosya üretiyor bu mcnp programı. Ben mcnp'yi bilen yabancı birine bu lif dosyalarından çoklu olarak nasıl çalıştırabileceğimi sordum ve bana bir betik (sh) dosyası gönderdi. Bir de program. Ancak betik dosyasını çalıştıramadım. Onun bana gönderdiği mesaj ve betik şu.
Aslında sadece o .scr dosyası nasıl çalışır onu yapamadım. Bir de asa adlı program gönderdi. Galiba mcnp 7 karakterden fazla giriş dosyası istemediğinden o karakterleri azaltıyor bir şekilde.

Betiği çalıştırdığımda:
maydin@maydin:~/Masaüstü/SIMULASYONLAR/deneme$ sudo ./mcnp.scr
./mcnp.scr[3]: export: /usr/tmp/root.8974: is not an identifier
maydin@maydin:~/Masaüstü/SIMULASYONLAR/deneme$


Betik:
#!/bin/ksh
# shell script to execute a mcnp job
export TMPDIR= /usr/tmp/$USER.$$
RTNDIR=`pwd`; export RTNDIR
  if [ -f $1 ]
  then root=${1%.*}

    output=$2.o
    runtpe=$1.r
  else
      echo =========================================
      echo "input file you specified does not exist"
      echo =========================================
      exit
  fi
if [ -d ${TMPDIR} ]
then :
else mkdir ${TMPDIR}
fi
cd ${TMPDIR}
cp ${RTNDIR}/$1 sysin
  if [ -f ${RTNDIR}/$3 ]
  then ln -sf ${RTNDIR}/$3 srctp
  fi
ls -l
mcnp i=sysin o=prout r=runt
asa <prout > ${RTNDIR}/${output}
cp runt ${RTNDIR}/${runtpe}
cp srctp  ${RTNDIR}/$1.s
cd ${RTNDIR}


Attığı mesaj:
Alıntı Yaproot=${1%.*}

which extracts the first part of an argument to the shell  allowing the command

mcnp.scr MyInputFile.in MyOutputfile

to be processed and return the files

MyOutputfile.o
MyInputFile.r
MyInputFile.s

To the running directory.  The .s file can be used as a source guess for a similar run and passed as

  mcnp.scr SubsequentCase.in SubsequentCaseOut MyInputFile.s

The .r file is the interim storage file that can be used for continue runs or tally plotting as described in the manual.
The asa program is a small c routine that converts the old style line printer control characters in the mcnp output to ascii control characters that allow the output file to be imported into a wordprocessor formatted.  The c source and use examples are attached. If you don't want the reformatted output change the line to

cp prout  ${RTNDIR}/${output}
I see the script didn't have the temporary directory setting line to keep the working directory clean.  If a temporary directory is not used you have to delete the prou* run* etc. files after each execution.  The attached corrected script file will create a directory with a name of the form
Din; ilimle birleşirse nefaset, cehaletle birleşirse rezalet, siyasetle birleşirse de felaket olur.

ekremsenturk

Korn shell script'indeki son satır olan "cd ${RTNDIR}" sil ve "cp prout  ${RTNDIR}/${output}" ile değiştir yazmış, (hata verirse) kısaca ve benim kısıtlı İngiliz'cem ile anlayabildiğim kadar. Asa Program'ı için ise, eski tarz kodları ASCII karakterlerine döndürmeye yaradığını ve çıktıyı bir kelime işlemcisine aktarabilmeye olanak tanıdığını yazmış.

maydin95

Yine olmadı. Adama tekrar ileti gönderdim de bakalım ne diyecek. Aslında benim sorunum şu:

Şimdi mcnp n=lif01 ile lif01 betiğini çalıştırıyorum. O da eğer değerler yüksekse 1 gün bile alabiliyor. Ege'nin bilgisayarına bağlanıp ssh ile "screen" yapıyorum ilk bir katman açması için. Sonra komutu yazıp çalıştırıyorum. Sonra da Ctrl+A+D ile screen den çıkıyorum. Bunu her dosya için tekrarlamam gerekiyor. Bu arkadaşa da bunları tekrarlamadan nasıl yaparım diye ileti göndermiştim. Aslında yazdıklarını tercüme edip okudum da yine ne demek istiyor anlamadım.

C kodu ile komut satırından bir şey çağırabilirsem onu deneyeceğim.
Din; ilimle birleşirse nefaset, cehaletle birleşirse rezalet, siyasetle birleşirse de felaket olur.

sem

Merhabalar C kodu ile komut verebilmek için çeşitli alternatifler mevcut;

system()
exec*()   dizisi (exec ile başlayan birden fazla fonksiyon var)
popen()

gibi fonksiyonları inceleyebilirsiniz. Bu fonksiyonların hepsi ile komut çağırabilirsiniz. İsteğiniz sadece bir komut çağırmak ise en pratik olan system() fonksiyonunu öneririm;


#include <stdio.h>

int main()
{
system("mcnp n=lif01");
return 0;
}


şeklinde deneyebilirsiniz.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?