首页 > 其他分享 >HereDoc妙用(二)

HereDoc妙用(二)

时间:2024-12-13 16:30:19浏览次数:8  
标签:脚本 妙用 文件 HereDoc 命令 Rscript Bash

在先前发布的文章中介绍了如何通过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脚本运行后的操作
# ...

标签:脚本,妙用,文件,HereDoc,命令,Rscript,Bash
From: https://blog.csdn.net/OMEMSTMATM/article/details/144428662

相关文章

  • 初探C语言|实现井字棋游戏:二维数组妙用
    文章目录前言正文**1.游戏基本规则****2.代码结构和实现****2.1初始化棋盘****2.2打印棋盘****2.3玩家和电脑的回合****2.4判断胜利或平局****2.5游戏主循环****2.6游戏菜单**总结与优化欢迎讨论:如有错误或不足,欢迎指正和建议,本人主打“听劝”。当然,如有疑......
  • Excel-Ctrl+Enter键的妙用
    一、Ctrl+Enter键的妙用 1.1 Ctrl+Enter键在多连续区域输入相同内容比如我要在一块区域内输入相同的数据,我首先选中这块区域,然后在第一个表格内输入数据-输入之后-(不要按回车键)按Ctrl+Enter键,即可全部表格输入同一数据  1.2 Ctrl+Enter键在非连续区域输入相同内容 先......
  • AI绘画StableDiffusion零基础入门—文生图:全面解析AI绘画中提示词的妙用和各种语法,Pro
    AI绘画的一个必不可少的环节就是告诉AI描述画面的Prompt(提示词),但是这种很长很乱、穿插着各种奇怪的数字符号、高深莫测的提示词,究竟在说着什么?难道真的是咒语吗?魔法?咒语?你绝对不曾想到,有生之年竟然能迎来这么一个奇迹时代:画画竟然还能用魔法,岂不是只要会念咒、人人都......
  • 妙用编辑器:使用Notepad--宏功能提高维护指令生成生成效率
    应用场景日常维护工作中,需要快速生成一批指令来完成某些操作,比如:快速添加一批节点。目标指令列表如下:ADDNODE:ID=1,NAME="NODE_1";ADDNODE:ID=2,NAME="NODE_2";ADDNODE:ID=3,NAME="NODE_3";ADDNODE:ID=4,NAME="NODE_4";ADDNODE:ID=5,NAME="NODE_5&quo......
  • 妙用编辑器:使用Notepad--的标记颜色功能更高效的阅读日志文件
    应用场景在日常维护工作中,经常需要查看一些日志,以判断系统的运行状态或者进行问题定位,当系统出现故障时,一般都会有特殊的关键字,但对于浩如烟海的日志来说,识别这些关键字信息还是非常费眼力的,比如有如下一段日志,尝试一眼看到关键信息:06-1013:14:11.63957849658WSystem.err......
  • Python中的“秘密武器”:成员运算符的奥秘与妙用
    在Python编程的世界里,成员运算符就像是隐藏在背后的超级英雄,它们虽然不像循环或条件判断那样经常出现在舞台中央,但却在构建高效、简洁的代码时扮演着至关重要的角色。今天,让我们一起揭开成员运算符的神秘面纱,探索它如何帮助我们解决实际问题,并让我们的代码更加优雅。引言......
  • 掌握 C++17:结构化绑定与拷贝消除的妙用
    C++17特性示例1.结构化绑定(StructuredBinding)结构化绑定允许你用一个对象的元素或成员同时实例化多个实体。结构化绑定允许你在声明变量的同时解构一个复合类型的数据结构(如结构体,std::tuple,std::pair,或者std::array)。这样可以方便地获取多个值,而不需要显式地调用std::......
  • 深入理解JavaScript类与对象:揭秘类字段和静态属性的妙用,js静态属性和实例属性
    在深入理解JaScript类与对象的过程中,类字段和静态属性是两个关键的概念,掌握它们的用法可以让你在实际开发中更加得心应手。虽然JaScript在ES6之前并没有类的概念,但通过ES6及以后的版本,引入了类语法糖,使得我们能够更直观地定义和使用类。类字段是指在类中直接定义的属性,而不是在构......
  • 【Cocos Creator深度探索】打造极致游戏体验:Camera的妙用与实战技巧
    引言在CocosCreator这个强大的游戏开发平台中,Camera(相机)是连接游戏世界与玩家视野的桥梁。它不仅决定了玩家能看到什么,还直接影响着游戏的视觉效果和沉浸感。今天,我们就来深入探讨CocosCreator中Camera的妙用与实战技巧,让你的游戏更加引人入胜。Camera基础认知在CocosCre......
  • 【Python进阶】Python中的函数式编程元素:map、filter和reduce的妙用
    1、函数式编程概览1.1函数式编程起源与发展函数式编程这一概念可以追溯到20世纪30年代的λ演算理论,这一时期数学家们开始探讨如何通过纯粹的函数运算来构建计算模型。随着时间的推移,函数式编程逐渐发展成为一种重要的编程范式,并在Lisp、Scheme、Haskell等语言中得到了充......