On Sun, Aug 11, 2019 at 02:10:06PM -0400, Stephen P. Molnar wrote:
> Thanks to all that shared their expertise.
> 
> #!/bin/bash
> while IFS= read -r d
> do
>     cd "${d}_apo-3k9b"
>     echo "${d}_apo-3k9b"
>     echo "${d}_apo-3k9b.dpf"
>     /home/comp/Apps/Autodock/autodock4 -p "${d}_apo-3k9b.dpf" -l
> "${d}_apo-3k9b.dlg"
>     cd ..
> done <ligand.list
> 
> and dos2unix solved the problem!!!!!!

There's still one more problem you want to fix: the exit status of cd
isn't being checked.  If the cd fails, your script still continues on
to run the two echo commands and the autodock4 command.  I don't know
what autodock4 does, but running it in the wrong directory is probably
not helpful.

Here's how I would solve that (there are other ways too):

#!/bin/bash
while IFS= read -r d
do
    ( cd "${d}_apo-3k9b" || exit
      echo "${d}_apo-3k9b"
      echo "${d}_apo-3k9b.dpf"
      exec /home/comp/Apps/Autodock/autodock4 -p "${d}_apo-3k9b.dpf" -l 
"${d}_apo-3k9b.dlg"
    )
done <ligand.list


P.S. it would also have been possible to work around the carriage return
issues with IFS, but your dos2unix approach is perfectly valid as well.

Reply via email to