我是编写 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
如果以上内容适合您的用途,请取消注释最后两行(删除#
)。