bash - 在 Ubuntu 应用程序 Windows10 中运行 script.sh 的问题
问题描述
我正在努力学习如何编码。不得不说我是在windows系统上用的ubuntu app,所以不知道我的问题是不是和这个系统有关。我在终端中建立了这些变量
FOLDER="/mnt/c/Users/franc/Desktop/nuova"
species=mm10
fragmentsize=200
window=200
gap=200
output="/mnt/c/Users/franc/Desktop/nuova/sicer"
然后我写了这个循环
#!/bin/bash
for fq in $FOLDER/*.bam
do
bedtools bamtobed -i "$fq" > "${fq%.bam}.bed"
sicer -t ${fq%.bam}.bed \
-s $species \
-f $fragmentsize \
-w $window \
-g $gap \
-o $output
echo "DONE"
done
基本上我希望将文件夹中的文件转换为“${fq%.bam}.bed”,然后我想在这些新文件上运行 sicer 工具。如果我在终端上复制并粘贴这些命令,一切正常,但如果我将循环保存为 script.sh 并尝试运行脚本,我会得到不同的错误。当然,我使脚本可执行,chmod +x
并且我还更改了脚本的语法,awk '{ sub("\r$", ""); print }' myscript.sh > myscript1.sh
因为我在 Windows 中编辑了它(否则 ubuntu 无法打开它)。但是当我启动包含循环的脚本时,它说它无法打开文件夹(Failed to open BAM file /*.bam
或BAD permission denied
)中的文件。我试图打开它只是给出命令./myscript1.sh
或同时使用sudo ./myscript1.sh
. 我错过了什么?我以某种方式将我在终端中建立的变量链接到保存的脚本中的新变量?谢谢弗朗西斯卡
解决方案
您需要导出变量,以便它们将被运行脚本的 shell 进程继承。
export FOLDER="/mnt/c/Users/franc/Desktop/nuova"
export species=mm10
export fragmentsize=200
export window=200
export gap=200
export output="/mnt/c/Users/franc/Desktop/nuova/sicer"
推荐阅读
- linux - Linux 服务应用程序创建文件的权限
- javascript - 如何将数组划分为具有灵活输出长度的块?
- c++ - 如何安全使用 QQmlEngine::CppOwnership?
- php - 将数据从 nodemcu 发送到网络服务器
- mysql - SQL 选择重叠行
- c++ - invoke_result 获取模板成员函数的返回类型
- scala - Kafka option 'group.id' is not supported in spark structured streaming
- android - Can't make app: ... 属性在 xml 文件中工作
- json - 更新整型 json 对象,变成一个整型的数组
- xml - 如果其他 Node.InnerText 与 Hashtable 键匹配,则将 XML 节点的 InnerText 设置为 Hashtable 值