如何从文件中读取字符串并将其作为字符串在另一个文件中使用

如何从文件中读取字符串并将其作为字符串在另一个文件中使用

我在将文件中的字符串作为字符串读入另一个脚本时遇到了麻烦。以下是我的详细信息:

我有 2 个脚本文件:一个是“step0.sh”,另一个是“step1.lsf”

‘step0.sh’文件仅包含两行

DIR="/sc/arion/work/kimm61/vepSIMUL/clinvar"
IN="clinvar.vcf"

并且“step1.lsf”包含以下行:


#!/bin/bash
#BSUB -J step1_1
#BSUB -P acc_Itan_lab
#BSUB -q private
#BSUB -n 41
#BSUB -R rusage[mem=20000]
#BSUB -R span[hosts=1]
#BSUB -W 120:00
#BSUB -o echo $DIR/step1out/%J.stdout
#BSUB -eo echo $DIR/step1out/%J.stderr
#BSUB -L /bin/bash


cd /sc/arion/work/kimm61/vepSIMUL/clinvar/
mkdir step1out


source activate phen
ml bcftools/1.10.2
module load vep/100

source /sc/arion/work/kimm61/vepSIMUL/clinvar/step0.sh
directory=echo "$DIR"
input=echo "$IN"
WRKDIR=echo "$DIR"/step1out
ref_fasta=/sc/arion/projects/Itan_lab/vep_data/fasta_ref/Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz

myinput=echo "$DIR"/"$IN"
myoutput=vep1_1.vcf

(我想要的是)

  1. 对于“step1.lsf”中的目录,我想从“step0.sh”中读取“DIR”
  2. 对于来自“step1.lsf”的输入,我想从“step0.sh”读取“IN”
  3. 对于标准输出(-o)和标准错误输出(-eo),我想从“step0.sh”中读取“DIR”

答案1

正确且最简单的方法是获取设置文件的开头脚本。然后像在脚本。对于 Dash/Sh 您必须使用命令.,对于 Bash 您可以使用source.

cat step1.lsf
#!/bin/bash

. step0.sh

echo "$DIR"
echo "$IN"

如果由于某种原因这不是你想要的,你可以从设置文件,通过命令替换捕获输出$()并将它们分配给脚本。 例如。

cat step1.lsf
#!/bin/bash

DIR="$(sed -nr 's/^DIR="(.*)"$/\1/p' step0.sh)"
IN="$(sed -nr 's/^IN="(.*)"$/\1/p' step0.sh)"

echo "$DIR"
echo "$IN"

实际上,脚本中的问题是这样的分配:

directory=echo "$DIR"

这里需要使用命令替换才能使其工作。

directory="$(echo "$DIR")"

但在这种情况下(您没有以某种特殊方式处理值),您可以将变量的值分配$DIR给另一个变量。

directory="$DIR"

相关内容