设置变量名称以输出关闭命令

设置变量名称以输出关闭命令

我是编写 bash 脚本的新手。我正在制作一个用于生物信息学数据分析的管道。我正在运行几个程序 fx Porechop,我想在输出名称中设置一个变量。所以我希望能够设置样本的名称,我正在运行,然后这个名称应该出现在每个程序的输出文件中。

所以我有这个脚本,但是它没有输出我给出的名称,而是尝试输出保存路径文件夹:

NAME=${1?Error: manlger directory til Nanopore fil(er)}
NAME2=${1?Error: ingen output fil angivet}
Now="$(date)"

#Porechop
$'/home/user/miniconda3/envs/pomoxis/bin/porechop' -i $NAME --threads 4 --check_reads 100 --discard_middle -o /media/user/new/porechop/trimmed_"$NAME2"_"$Now".fastq 

错误是:

enter FileNotFoundError: [Errno 2] No such file or directory: '/media/user/new/porechop/trimmed_echo /media/user/new/b.frag/_Tue Feb 18 11:36:17 CET 2020.fastq'

我希望有人能帮我找到一个脚本来制作这个变量

—萨宾

答案1

不确定现阶段需要什么,但请尝试:

printf '%s\t%s\n' 'Input is:' "${1:?Please specify an input}" >&2
if [ -e "$1" ]; then
    case "$1" in
        */*) input=$1 ;;
        *) input=./$1 ;;
    esac
else
    echo "Specified input doesn't exist, exiting" >&2
    exit 1
fi
output="${input%/*}/porechop/trimmed_${input##*/}_$(date '+%F_%H-%M-%S-%Z').fastq"
printf '%s\t%s\n' 'Output will be:' "$output" >&2

#mkdir "${output%/*}"
#/home/user/miniconda3/envs/pomoxis/bin/porechop -i "$input" --threads 4 --check_reads 100 --discard_middle -o "$output"
  • 使用示例:
./script /media/user/new/b.frag

打印内容如下:

Input is:       /media/user/new/b.frag
Output will be: /media/user/new/porechop/trimmed_b.frag_2020-02-18_11-36-17-CET.fastq

如果以上内容适合您的用途,请取消注释最后两行(删除#)。

相关内容