gpt4 book ai didi

bash - Shell 脚本未运行,未找到命令

转载 作者:行者123 更新时间:2023-11-29 08:43:56 25 4
gpt4 key购买 nike

我对 UNIX 编程非常非常陌生(通过终端在 MacOSX Mountain Lion 上运行)。我一直在学习生物信息学和分子方法类(class)的基础知识(我们有两个类(class)),我们最终将使用 perl 和 python 进行数据管理。无论如何,我们的任务是编写一个 shell 脚本,以从一组文件中获取数据,并将其以特定程序 (Migrate-N) 可以读取的格式写入新文件。

当我在命令行中输入它们时,我已经获得了许多函数来独立完成我需要的事情,但是当我将它们全部放在一个脚本中并尝试运行它时,我得到了一个错误。以下是详细信息(对于长度,我深表歉意):

#! /bin/bash

grep -f Samples.NFCup.txt locus1.fasta > locus1.NFCup.txt
grep -f Samples.NFCup.txt locus2.fasta > locus2.NFCup.txt
grep -f Samples.NFCup.txt locus3.fasta > locus3.NFCup.txt
grep -f Samples.NFCup.txt locus4.fasta > locus4.NFCup.txt
grep -f Samples.NFCup.txt locus5.fasta > locus5.NFCup.txt
grep -f Samples.Salmon.txt locus1.fasta > locus1.Salmon.txt
grep -f Samples.Salmon.txt locus2.fasta > locus2.Salmon.txt
grep -f Samples.Salmon.txt locus3.fasta > locus3.Salmon.txt
grep -f Samples.Salmon.txt locus4.fasta > locus4.Salmon.txt
grep -f Samples.Salmon.txt locus5.fasta > locus5.Salmon.txt
grep -f Samples.Cascades.txt locus1.fasta > locus1.Cascades.txt
grep -f Samples.Cascades.txt locus2.fasta > locus2.Cascades.txt
grep -f Samples.Cascades.txt locus3.fasta > locus3.Cascades.txt
grep -f Samples.Cascades.txt locus4.fasta > locus4.Cascades.txt
grep -f Samples.Cascades.txt locus5.fasta > locus5.Cascades.txt

echo 3 5 Salex_melanopsis > Smelanopsis.mig
echo 656 708 847 1159 779 >> Smelanopsis.mig
echo 154 124 120 74 126 NFCup >> Smelanopsis.mig
cat locus1.NFCup.txt locus2.NFCup.txt locus3.NFCup.txt locus4.NFCup.txt locus5.NFCup.txt >> Smelanopsis.mig
echo 32 30 30 18 38 Salmon River >> Smelanopsis.mig
cat locus1.Salmon.txt locus2.Salmon.txt locus3.Salmon.txt locus4.Salmon.txt locus5.Salmon.txt >> Smelanopsis.mig
echo 56 52 24 29 48 Cascades >> Smelanopsis.mig
cat locus1.Cascades.txt locus2.Cascades.txt locus3.Cascades.txt locus4.Cascades.txt locus5.Cascades.txt >> Smelanopsis.mig

grep 系列只是将每个位点的每个位点的 DNA 序列数据提取到新的文本文件中。 Samples...txt 文件有站点的样本 ID 号,.fasta 文件有按样本 ID 组织的序列信息;如果我单独运行它,grepping 在命令行中工作得很好。

第二组代码创建我最终需要的实际新文件,该文件以 .mig 结尾。 echo 线是关于程序需要信息的计数数据(每个基因座的碱基对、分析中的种群、每个站点的样本等)。 cat 行是通过在 echo 行中指示的站点特定信息下方的所有 grepping 创建的站点数据将轨迹混合在一起。毫无疑问,您明白了。

为了创建 shell 脚本,我从 Excel 开始,这样我就可以轻松地复制粘贴/自动填充单元格,保存为制表符分隔的文本,然后在 TextWrangler 中打开该文本文件以删除制表符,然后保存为 .sh文件(换行符:Unix (LF) 和编码:Unicode (UTF-8))与脚本中使用的所有文件位于同一目录中。我试过使用 chmod +x FILENAME.shchmod u+x FILENAME.sh 来尝试确保它是可执行的,但无济于事。即使我将脚本缩减为只有一个 grep 行(第一行是 #!/bin/bash),我也无法让它工作。当我直接在命令行中输入它时,这个过程只需要一点时间,因为这些文件都不大于 160KB,有些文件要小得多。这是我输入的内容以及我尝试运行该文件时得到的内容(HW 是正确的目录)

localhost:HW Mirel$ MigrateNshell.sh
-bash: MigrateNshell.sh: command not found

我已经陷入僵局两天了,所以任何意见都将不胜感激!谢谢!!

最佳答案

出于安全原因,shell 不会在当前目录(默认情况下)搜索可执行文件。您必须具体说明,并告诉 bash 您的脚本在当前目录中 (.):

$ ./MigrateNshell.sh

关于bash - Shell 脚本未运行,未找到命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16529658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com