Você parece estar confuso sobre o que o echo
faz. Você não pode executar qualquer comando usando echo
, não especificamente nohup
. echo
simplesmente exibe o texto, ele não o executa.
Agora, se eu entendi o que você quer fazer corretamente, tudo o que você precisa é o seguinte:
#!/usr/bin/env bash
## As others have said, this is a better loop for your purposes
## and it avoids both useless uses of cat.
while read a
do
## you don't need to copy the variable; you need the
## quotes to cope with names with spaces.
mkdir "$a"
while read b
do
nohup ./tools $b $a >> "$a"/output &
done < another_list_of_names
done < list_of_names