任务是批量处理数据!
但是这些数据是在不同文件下的,
也就是在用第三方软件处理的时候,要将不同文件的文件名传递给该软件。
所以,如果每次运行该软件的时候,手动输入文件名是很费时费力的。
请问,如何编写类似于Windows中批处理的程序来解决该问题?
应该是用SHELL?
比如该软件执行方式为: DDD 文件名.其中DDD是该软件名。
请哪位大哥给个代码啊?
谢谢谢谢!
没法运行啊!?
我用 ls -l 得到 -rwxr-xr-x 1 gf gf 83 2011-06-25 10:10 Dialign.sh
但是用 sudo ./Dialign.sh 却没有任何反应!?
其中 Dialign.sh 文件如下:
#!/bin/bash
cd fasta
for $filename in `ls`
do
dialign2-2 $filename
done
ls fasta 后得到的结果如下:
gf@ubuntu:~$ ls fasta
BB11001.tfa BB11003.tfa BB11005.tfa BB11006.tfa
shell文件能不能设置断点?
不能设断点,但可以用 sudo bash -x ./Dialign.sh 这种方式在执行过程中打印出执行的每一条语句及结果,用于调试。
改一下,`ls`可能会新开一个shell来执行,所以路径可能有变化,改成`ls fasta`。然后在 for 循环里面加 echo $filename 语句来打印文件名。
#!/bin/bash
for $fiiename in `ls fasta`
do
echo $filename
dialign2-2 $filename
done
如果文件名都正确打印了,那么就是运行dialign2-2的问题了。你再试试看,fasta目录下能不能直接运行 dialign2-2 这个软件。
应该是for fiiename in `ls` 呵呵...谢谢了
本回答被提问者采纳