Kirjoittaja Aihe: Bash-outous  (Luettu 1969 kertaa)

AimoE

  • Käyttäjä
  • Viestejä: 2707
    • Profiili
Bash-outous
« : 23.01.22 - klo:17.15 »
Tuli vastaan juttu jota en ymmärrä.

Jos suoritan bash-komentorivillä tämän:
Koodia: [Valitse]
if [ -t 1 ] ; then echo true ; else echo false ; fi niin se tulostaa true. Mutta jos suoritan tämän:
Koodia: [Valitse]
echo $(if [ -t 1 ] ; then echo true ; else echo false ; fi) niin se tulostaakin false. Miten siinä niin käy? Minulla onkomentotiedostossa toinen samantyyppinen kohta, jossa if-lauseen ehtona on case-esac, ja siinä if toimii odotuksen mukaisesti, mutta tätä yksinkertaisempaa en vaan saa toimimaan.

Juu, toki sen asian voi koodata toisellakin tavalla, mutta haluaisin silti ymmärtää mistä on kyse.

SuperOscar

  • Käyttäjä
  • Viestejä: 3993
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Bash-outous
« Vastaus #1 : 23.01.22 - klo:22.27 »
Oletan, että $()-rakenteen forkkaama uusi komentotulkki ei olekaan kiinni päätteessä, vaan ainoastaan sen emo? Joka tapauksessa zsh:ssa on täsmälleen samoin, joten tämän voinee olettaa olevan vakiotoiminta.
pöytäkone 1, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; NUC: openSUSE Leap 15.5; RPi 1: FreeBSD 13.2-RELEASE; RPi 2: LibreELEC 11