Kommentit
- Liittyvät: Bash-komentosarjan lähdehakemisto sisältä
- Tämä ei ole kopio kysymyksestä, jolle se on tällä hetkellä merkitty. Näitä kahta kysymystä tulisi verrata ainakin niiden otsikoiden (ja vastausten) perusteella. Se, että vastaus tähän kysymykseen kuuluu jo toiseen, ei ole tai sen pitäisi olla merkitystä.
- @KennyEvitt todellakin, yksi tärkeimmistä syistä, jonka lopetamme, johtuu juuri siitä, että vastaus on annettu muualla. Ja itse asiassa pääkysymys on tosiasiallisesti, kuinka komennon ulostulo osoitetaan muuttujalle, jonka dupe kattaa. Olen myös antanut vastauksen tähän erityistapaukseen, joten kaikki perusteet on katettu. Ei ole mitään hyötyä tämän avaamisesta uudestaan.
- @terdon Tämä on resurssi, joka on käytettävissä ja tarkoitettu koko Unixin & Linux-käyttäjille. arvokas kysymys, vaikka alkuperäinen kysyjä todella tarvitsisi vastausta jo muualle. Jos jotain, mielestäni tätä kysymystä tulisi muokata vastaamaan paremmin sen otsikkoa ja se olisi avattava uudelleen, ei sallia lisätoimintaa, mutta ei tarkoita, että kysymys on ' huono '.
- @KennyEvitt kaksoiskappaleena sulkeminen ei tarkoita, että kysymys on huono! Tämä kysymys pysyy täällä vastauksena ikuisesti. Jos haluat todella tietää, kuinka saada nykyinen työkirja, löydät vastauksesi täältä. Jos haluat vain tietää, kuinka komennon lähtö tallennetaan muuttujaan, löydät vastauksen myös täältä seuraamalla linkkiä dupe. Joka tapauksessa tämä ei ole ' oikeastaan jotain, jonka minun pitäisi tehdä yksin, jos sinusta tuntuu vahvasti, että se olisi avattava uudelleen, avaa keskustelu aiheesta Unix ja Linux Meta , joissa tällaiset asiat pitäisi ratkaista.
Vastaa
Siellä ”Sitä ei tarvitse tehdä, se on jo muuttujassa :
$ echo $PWD /home/terdon
PWD
muuttuja on POSIXin määrittämä ja toimii kaikissa POSIX-yhteensopivissa kuoreissa:
PWD
Asettaa kuoren ja cd-apuohjelman avulla. Kuoressa arvo on alustettava ympäristöstä seuraavasti. Jos PWD: n arvo välitetään kuorelle ympäristössä, kun se suoritetaan, arvo on nykyisen työhakemiston absoluuttinen polunimi, joka on enintään {PATH_MAX} tavua, mukaan lukien lopetettava nolla tavu, ja arvo ei sisällä kaikki komponentit, jotka ovat pisteitä tai pisteitä, kuoren on asetettava PWD ympäristön arvoon. Muussa tapauksessa, jos PWD: n arvo välitetään kuorelle ympäristössä, kun se suoritetaan, arvo on nykyisen työhakemiston absoluuttinen polunimi, eikä arvo sisällä piste- tai piste-piste-komponentteja, niin se on määrittelemätön, asettako kuori PWD: n arvoksi ympäristöstä vai asettaako PWD polun nimeksi, jonka pwd -P tuottaa. Muuten sh-apuohjelma asettaa PWD: n polun nimeksi, jonka pwd -P tuottaa. Tapauksissa, joissa PWD on asetettu arvoon ympäristöstä, arvo voi sisältää komponentteja, jotka viittaavat symbolisen linkin tyyppisiin tiedostoihin. Tapauksissa, joissa PWD on asetettu polunimeksi, jonka pwd -P tuottaisi, jos nykyisessä työhakemistossa tai sen hakemiston missä tahansa vanhemmassa ei ole riittävästi lupaa määrittää, mikä polku olisi, PWD-arvo määrittelemätön. Tämän muuttujan määritykset voidaan jättää huomiotta. Jos sovellus asettaa tai poistaa PWD-arvon, cd- ja pwd-apuohjelmien käyttäytymistä ei ole määritelty.
Yleisemmäksi vastaukseksi tapa tallentaa komennon lähtö muuttujaan on liittää komento $()
tai ` `
(taaksepäin):
var=$(command)
tai
var=`command`
Näistä kahdesta $()
on suositeltava, koska on helpompaa luoda monimutkaisia komentoja, kuten command0 $(command1 $(command2 $(command3)))
.
Vastaa
dir=$(pwd)
Tämä on siirrettävämpi ja suositeltavampi kuin backticks-menetelmä.
$()
-toiminnon avulla voit sijoittaa komennot
esim .: mech_pwd=$(pwd; echo in $(hostname))
Kommentit
- Tosiasiassa, jos jotain, taustakuvat ovat kannettavampia, koska ne edeltävät
$()
-muotoa.Mahdollisesti voi silti olla joitain koneita, jotka käyttävät kuoria, jotka eivät ' tue uudempaa$()
-merkintää. Vaikka molemmat on määritelty POSIX: lla,$()
on nykyään suositeltava, koska se on puhtaampi syntakse ja voidaan sijoittaa ($(command1 $(command2))
) kauas yksinkertaisempi tapa kuin backticks.
Vastaus
Voit käyttää joko ympäristömuuttujaa $PWD
tai kirjoita jotain:
dir=`pwd`
Vastaa
Sinun on käytettävä komennon korvaamista komennon pwd
tuloksen tallentamiseen muuttujaan. Komennon korvaaminen voi käyttää taaksepäin tai dollarimerkkejä. Näin:
$ mkdir "/tmp/new dir" $ cd "/tmp/new dir" $ CWD="$(pwd)" $ echo $CWD /tmp/new dir $ cd ~ $ echo $CWD /tmp/new dir $ pwd /home/ja
Vastaa
Nykyisen työhakemiston arvo voi ole erilainen. Jos käytit symbolisia linkkejä nykyisen hakemiston hakemiseen, pwd antaa erilaisia tuloksia kuin / usr / bin / pwd. Koska käytät bashia, käytän:
dir=$(/usr/bin/pwd)
tai kommentin mukaan:
dir=$(pwd -P)
koska en tykkää lainausmerkeistä, koska ne eivät voi pesiä.
Kommentit
- dir = $ (pwd -P) toimii myös.