Umieść blok kodu bash w podpowłoce


1

Miałem nadzieję, że to zadziała:

echo "starting";
{
 cd "$HOME/foobar"
 echo "rolo" > file.txt
}
echo "ending";

gdzie kod podpowłoki miałby miejsce między nawiasami klamrowymi, ale ta składnia wydaje się niepoprawna, jak mogę to zrobić?


Używaj parens zamiast aparatu ortodontycznego
Eric Renouf

nie ma nic złego w nawiasach klamrowych w twoim przykładzie, działa, nie ma błędu składniowego. Co dostajesz jako błąd. wiadomość?
Tagwint

Lepszym pytaniem jest, dlaczego w pierwszej kolejności potrzebujesz podpowłoki? Czy potrafisz wyjaśnić kontekst tego, co naprawdę próbujesz osiągnąć?
Sergiy Kolodyazhnyy

Chciałem tylko uruchomić kilka poleceń, które nie wpłynęłyby na inne polecenia, to wszystko
Alexander Mills,

Odpowiedzi:


1

Zgodnie z dokumentacją bash możesz użyć grupowania w nawiasach lub nawiasach klamrowych, ale jeśli użyjesz nawiasów, otrzymasz zamiast tego podpowłokę. Aby uruchomić polecenia w podpowłoce, użyj:

echo "starting"
(
    cd "$HOME/foobar"
    echo "rolo" > file.txt
)
echo "ending"

chociaż w tym przykładzie możesz po prostu

echo "rolo" > "$HOME/foobar/file.txt"

tak, tak, przykład został wymyślony ... w niektórych przypadkach musimy cd, aby zainstalować rzeczy łatwiej, więc tak
Alexander Mills

2
@AlexanderMills, rzeczywiście, rozważ pushdi popdzamiast cdtych przypadków jako inne możliwe rozwiązanie
Eric Renouf

tak dzięki, jaka jest główna zaleta pushd/ popd?
Alexander Mills,

1
Zrobią płytę cd i „uncd” bez konieczności jawnego śledzenia, gdzie wrócić i bez konieczności tworzenia podpowłoki
Eric Renouf

Ach, okej, spróbuję
Alexander Mills,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.