variable not showing up in bash script when using an array -
i have script prepare files submit trough qsub cluster, creating array based on file , using elements in array create qsub files. however, can't append variables $rawdata/$i_1.fastq.gz part. script:
> cat create.sh #!/bin/bash rawdata="/home/jfertaj/data/fastq" # make array of each sample id mapfile -t myarray < array.txt in "${myarray[@]}" cat > pbs.script.$i << eof #!/bin/bash kallisto quant -t 16 -b 100 -o /home/jfertaj/data/results_kallisto/output_bootstrap_$i $rawdata/$i_1.fastq.gz $rawdata/$i_2.fastq.gz eof done exit 0; when run bash script , created files see this:
... kallisto quant -t 16 -b 100 -o /home/jfertaj/data/results_kallisto/output_bootstrap_intp_993 /home/jfertaj/data/fastq/.fastq.gz /home/jfertaj/data/fastq/.fastq.gz i have tried including "$i" shows on resulting files: "intp_993"_1.fastq.tz. there way fix it?
replace $rawdata/$i_1.fastq.gz $rawdata/$i_2.fastq.gz $rawdata/${i}_1.fastq.gz $rawdata/${i}_2.fastq.gz.
that is, change this:
kallisto quant -t 16 -b 100 -o /home/jfertaj/data/results_kallisto/output_bootstrap_$i $rawdata/$i_1.fastq.gz $rawdata/$i_2.fastq.gz to this:
kallisto quant -t 16 -b 100 -o /home/jfertaj/data/results_kallisto/output_bootstrap_$i $rawdata/${i}_1.fastq.gz $rawdata/${i}_2.fastq.gz the shell treats i_1 , i_2 variable names, when want variable i appended "_1" , "_2". in such situations, when need use variable somevar followed suffix starting symbols valid in variable names, let's _suffix, need use braces identify variable. instead of $somevar_suffix need write ${somevar}_suffix.
this mentioned in man bash, emphasis mine:
${parameter}
the value of parameter substituted. the braces required when parameter positional parameter more 1 digit, or when parameter followed character not interpreted part of name. [...]
Comments
Post a Comment