Kirjoittaja Aihe: Bash-outous  (Luettu 2259 kertaa)

AimoE

  • Käyttäjä
  • Viestejä: 2782
    • 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ä: 4060
  • 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, NUC: openSUSE Leap 15.6, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11