首页 > 解决方案 > 在 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 /*.bamBAD permission denied)中的文件。我试图打开它只是给出命令./myscript1.sh 或同时使用sudo ./myscript1.sh. 我错过了什么?我以某种方式将我在终端中建立的变量链接到保存的脚本中的新变量?谢谢弗朗西斯卡

标签: bashloopsubuntu

解决方案


您需要导出变量,以便它们将被运行脚本的 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"

推荐阅读