można umieścić przekierowanie na liście poleceń:
{
command1
command2
} >/dev/null
Jeśli w pewnym momencie w skrypcie nie ma żadnego wyjścia z kolejnych poleceń, można przekierować wyjście przez powłokę z exec
wbudowanego polecenia:
echo interesting
exec >/dev/null
echo boring
Zauważ, że to trwa aż do końca scenariusza, a nie tylko do końca funkcji. Zajmuje się poleceniami po interesującym, ale nie wcześniej.
Istnieje sposób na odwrócenie efektu exec /dev/null
, za pomocą manipulacji deskryptorem pliku. Niekoniecznie jednak to zalecam, ponieważ w praktyce może to być trudne. Chodzi o to, aby przenieść wszystko, co jest podłączone do standardowego wyjścia, do innego deskryptora, a następnie przekierować standardowe wyjście do innego pliku, a na koniec przenieść oryginalne standardowe wyjście z powrotem na standardowe wyjście.
{
exec 3>&1 # duplicate fd 3 to fd 1 (standard output)
exec >/dev/null # connect standard output to /dev/null
echo boring
exec 1>&3 # connect standard output back to what was saved in fd 3
echo interesting
exec >/dev/null # connect standard output to /dev/null again
echo more boring
} 3>/dev/null # The braced list must have its fd 3 connected somewhere,
# even though nothing will actually be written to it.
'r = $ (a); echo $ r' może oczywiście zostać zastąpione właśnie' a'. –