Ampersand jako parametr w bashu

0

Co chce zrobic. Chce miec mozliwosc opcjonalnie dodac wykonanie w tle, przez dodawanie lub nie ampersanda do polecen. Niestety bash mi go escapuje zamieniajac na '&'. Wie ktos jak to zrobic? Ponizej pseudokod o co mi chodzi.

VAR=

if()
VAR="&"

command1 "${VAR}"
command2 "${VAR}"
command3 "${VAR}"

if()
wait
2

Niestety tak się nie da, z racji, że & to operator powłoki a nie polecenia. W takim przypadku najprościej będzie stworzyć dodatkowe 2 funkcje:

async() {
  "$@" &
}

sync() {
  "$@"
}

i następnie odpalać przy ich pomocy inne pozostałe komendy.

1

Zamiast kombinować ze zmiennymi lepiej zdefiniować funkcję

function customRun
{
    if [$background = 1]; then
         %@ &
    elif
         %@
    fi
}

customRun command1 inny parametr
#bez parametru
customRun command2 
customRun command3 

I teraz albo po prostu podajesz odpowiednią wersję customRun (możesz zrezygnować z if) albo zmieniasz wartość zmiennej background.

0

To ze sie da funkcja to wiem:) Ale i tak dzieki i daje po punkciku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1