我正在通过提供命令molcas -f file.input
来运行量子化学计算。我现在需要将molcas -f
放入一个脚本中,该脚本也tail
生成的file.log的最后100行,让我快速确认一切都按照它的方式完成至。所以我想运行脚本run.sh
:
#!/bin/bash
molcas -f [here read the file.input from command line]
tail -100 [here read the file.log]
问题是如何让脚本读取我给出的参数,然后找到自己的输出文件(具有相同的文件名,但具有不同的扩展名)。
后续
说我有一堆编号的文件file-1, file-2, ..., file-n
。如果我不是跑步,我会节省时间
./run.sh file-1.input file-1.log
我跑
./run.sh n n
或
./run.sh n.input n.log
假设脚本中给出了数字n
的实际文件名和位置。可以这样做吗?
答案 0 :(得分:1)
使用此代码:
#!/bin/bash
molcas -f "$1"
tail -100 "$2"
您需要按如下方式执行脚本run.sh:
./run.sh file.input file.log
答案 1 :(得分:0)
我要对molcas
一无所知,所以我向this side致以获得基本的理解。
语法看起来像这样......
#!/bin/bash
# waiting for input
read -p "Enter a filename (sample.txt): " FILE
# checking for existing file
if [ -e "$FILE" ]; then
read -p "Enter a command for moculas: " CMD
else
echo "Sorry, \"${FILE}\" was not found. Exit prgramm."
exit 1
fi
# I am not sure how this command works.
# maybe you have to edit this line by your self.
molcas $FILE -f "$CMD"
# checking for programm-errors
ERRNO=$?
if [ "$ERRNO" != "" ] && [ "$ERRNO" -gt 0 ]; then
echo "Molcas returned an error. Number: ${ERRNO}"
exit 1
fi
# cuts off the fileending (For example: sample.txt gets sample)
FILENAME="${FILE%.*}"
# checking other files
ERRFILE="${FILENAME}.err"
tail -n 100 $ERRFILE
LOGFILE="${FILENAME}.log"
tail -n 100 $LOGFILE
exit 0
我会发布更多内容,但不清楚如何处理这些数据。
希望这有点帮助。