Mam taki kod Bash:
copiedFlag=false
..
if [...]
cp originalFile newFile && copiedFlag=true
fi
..
if[....]
copiedFlag || ( cp originalFile newFile && copiedFlag=true )
fi
..
if [ copiedFlag == true ]; then
cp newFile originalFile
fi
..
Warunek złożony copiedFlag || ( cp originalFile newFile && copiedFlag=true )
jakoś nie działa.
Ale jeśli to zrobię, to działa:
copiedFlag || cp originalFile newFile && copiedFlag=true
Jest to ważny krok w mojej logice, dlatego chcę mieć pewność, że moje zadanie jest całkowicie poprawne, załączając je w nawiasy klamrowe. Dlaczego to nie działa? Co ja robię źle?
Odpowiedzi:
1 dla odpowiedzi № 1Warunek złożony
copiedFlag || ( cp originalFile newFile && copiedFlag=true )
jakoś nie działa.
Nie działa, ponieważ tworzysz nową podpowłokę i wprowadzasz zmiany copiedFlag
nie są widoczne w bieżącej powłoce.
Naprawdę nie musisz tutaj tworzyć podpowłoki, po prostu użyj wyrażenia nawiasowego { ...; }
tak jak:
"$copiedFlag" || { cp originalFile newFile && copiedFlag=true; }