I have the following bash script:
#!/bin/bash
$db=DB
$H=6973
$cov=38
for i in $(find . -type f -name "*.*.las");
do
cat <<EOF
#qsub <<EOF
#!/bin/bash -l
#PBS -N DASqv
#PBS -l walltime=48:00:00
#PBS -j oe
#PBS -l mem=30G
#PBS -l ncpus=1
#PBS -M m.lorenc@qut.edu.au
##PBS -m bea
cd \$PBS_O_WORKDIR
source activate thegenemyers
DAStrim=$(DASqv -v -H$H -c$cov $db $i | grep Recommend - | sed "s|Recommend ||g" - | sed "s|'||g" -)
DAStrim $db $i
EOF
done
Unfortunately, I got this error:
sh Dascrubber_pbs.sh
DASqv: -H '' argument is not an integer
#qsub <<EOF
#!/bin/bash -l
#PBS -N DASqv
#PBS -l walltime=48:00:00
#PBS -j oe
#PBS -l mem=30G
#PBS -l ncpus=1
#PBS -M m.lorenc@qut.edu.au
##PBS -m bea
cd $PBS_O_WORKDIR
source activate thegenemyers
DAStrim=
DAStrim ./DB.309.las
I would have expected to see e.g. DAStrim=$(DASqv -v -H6973 -c38 DB ./DB.82.las | grep Recommend - | sed "s|Recommend ||g" - | sed "s|'||g" -)
.
What did I miss?
$H=6973
isn't an assignment in bash (and related shells): useH=6973
– steeldriver Jan 30 '18 at 00:41sed
. there's no need forgrep | sed | sed
here - one sed command can do it allDAStrim=$(DASqv -v -H$H -c$cov $db $i | sed -n -e "/Recommend / { s/Recommend //; s/'//g ; p }"
. More importantly, see https://unix.stackexchange.com/questions/321697/why-is-looping-over-finds-output-bad-practice – cas Jan 30 '18 at 01:05sh Dascrubber_pbs.sh
, you are not necessarily executing it as a bash script. What language is assumed here, depends on how sh is defined (where it is pointing to). – user1934428 Jan 30 '18 at 05:57