HereDoc妙用(二)

在先前发布的文章中介绍了如何通过Bash的HereDoc特性为Bash脚本更加方便地添加帮助信息。Bash语言实现了多种对输入输出的重定向操作,HereDoc便是其中一种,其可以将当前源代码文件中的部分内容作为命令的标准输入,即让命令从当前的脚本文件中读取内容

当Bash脚本需要依赖外部的小文本文件时,利用这一特性,我们可以将文件整合进Bash脚本。因为这样不再需要保证依赖文件的路径和内容的正确,从而使得脚本部署的过程更加快捷方便。

例如,可以将一段R脚本嵌入到Bash脚本中,从而不需要在新建一个R脚本然后再在Bash脚本中调用。

#!/bin/env bash

# ...
# R脚本运行前的操作
# ...

# 通过HereDoc特性将一小段R脚本嵌入Bash脚本中
# 注意 Rscript 命令后的短横线,这让 Rscript 命令从标准输入流中读取代码并执行
Rscript='/User/balabala/Tools/miniconda3/envs/scAPAtrap/bin/Rscript'
$Rscript - << END
library(scAPAtrap)
options(stringsAsFactors=FALSE)
inputBam="/jdfsbjcas1/Projects/APA/Data/demo.bam"
logf="/jdfsbjcas1/Projects/APA/Logs/demo_scapatrap_notails_onestep.log"
outputDir="/jdfsbjcas1/Projects/APA/Result/Demo"
tools=list(samtools="/User/balabala/Tools/miniconda3/envs/scAPAtrap/bin/samtools",
           umitools="/User/balabala/Tools/miniconda3/envs/scAPAtrap/bin/umi_tools",
           featureCounts="/User/balabala/Tools/miniconda3/envs/scAPAtrap/bin/featureCounts",
           star="/User/balabala/Tools/miniconda3/envs/scAPAtrap/bin/STAR")
scAPAtrap(tools=tools,
          trap.params=setTrapParams(),
          inputBam=inputBam,
          outputDir=outputDir,
          logf=logf)
END

# ...
# R脚本运行后的操作
# ...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值