Dlaczego tak się dzieje, gdy robię to z poleceniem działającym $iw tle, a kontrola zadań mówi, że nazwa procesu zawiera $izamiast tego, jaka była rzeczywista wartość $i?
Michael
@Michael Pełny program z danymi wyjściowymi pomógłby lepiej zrozumieć
gammay
for I in <whatever>; do rm -fr $I & done... jobs-> rm -fr $Ikilka razy, zamiast usuwać rzeczywisty katalog dla każdego zadania
Michael
Mam na to odpowiedź, jest długa. Więc myślę, że powinieneś opublikować to jako nowe pytanie (i dodać link do pytania tutaj), odpowiem i otrzymasz więcej odpowiedzi.
Odpowiedzi:
Usunąć ; po śnie
for i in $(seq 3); do echo $i ; sleep 2 & done
Przy okazji, takie pętle lepiej pisać w osobnych wierszach z odpowiednim wcięciem (jeśli piszesz to w pliku skryptu powłoki).
for i in $(seq 3) do echo $i sleep 2 & done
źródło
$i
w tle, a kontrola zadań mówi, że nazwa procesu zawiera$i
zamiast tego, jaka była rzeczywista wartość$i
?for I in <whatever>; do rm -fr $I & done
...jobs
->rm -fr $I
kilka razy, zamiast usuwać rzeczywisty katalog dla każdego zadaniaMożesz umieścić polecenie w tle w ()
for i in $(seq 3); do echo $i ; (sleep 2 &) ; done
źródło
wait
zakończyć zadań w tle.