Bash for-loop not continuing even when body is launched in background subshell (works in zsh) -
when run following script in bash:
#!/bin/bash names=("all" "no_c" "no_r" "no_q") name in $names; export name=$name mkdir -p $name ( echo 'selection' 'system' | gmx cluster -f ${name}_protein_only.trr -s ${name}_protein_only.pdb -n ${name}_index.ndx -g ${name}/cluster.log -cutoff 0.2 -fit -method gromos -o ${name}/cluster.output -dist ${name}/rmsd-dist.xvg -av -cl ${name}/clusters.pdb ) & done wait the loop won't loop until subshell has completed, though i've put background '&'. if run same script in zsh, runs expected (4 parallel tasks). bug or missing something?
you need use different notation elements of array in bash (see arrays , shell parameter expansion):
for name in "${name[@]}"; when specify $name , name array, bash treats ${name[0]}.
i used variant on code demonstrate:
#!/bin/bash names=("all" "no_c" "no_r" "no_q") name in "${names[@]}" export name=$name mkdir -p $name ( echo $name 'selection' 'system' | sed s/s/z/g; sleep 3 ) & done wait
Comments
Post a Comment