Kommentarer
- Relateret: Sådan får du kildekatalog for et Bash-script indefra
- Dette er ikke en duplikat af det spørgsmål, som det i øjeblikket er markeret som et. De to spørgsmål skal i det mindste sammenlignes på baggrund af deres titler (såvel som deres svar). At svaret på dette spørgsmål allerede er dækket af et andet, er eller burde være irrelevant.
- @KennyEvitt faktisk er en af hovedårsagerne til, at vi lukker netop fordi et svar har blevet givet andetsteds. Og faktisk er hovedspørgsmålet her faktisk, hvordan man tildeler output fra en kommando til en variabel, der er dækket af dupe. Jeg har også givet svaret på denne specifikke sag, så alle baser er dækket. Der ville ikke være nogen fordel ved at åbne dette igen.
- @terdon Som en tilgængelig ressource og beregnet til hele befolkningen af Unix & Linux-brugere er dette et værdifuldt spørgsmål, selvom den oprindelige spørger virkelig bare havde brug for et svar, der allerede er dækket andetsteds. Hvis noget, synes jeg, at dette spørgsmål skal redigeres, så det passer bedre med titlen, og det bør genåbnes, ikke for at tillade yderligere aktivitet, men for at ikke antyde, at dette spørgsmål er ' dårlig '.
- @KennyEvitt lukning som duplikat på ingen måde betyder, at spørgsmålet er dårligt! Dette spørgsmål vil forblive her, besvaret for evigt. Hvis du virkelig vil vide, hvordan du får den aktuelle arbejdsmappe, finder du dit svar her. Hvis du bare vil vide, hvordan du gemmer output fra en kommando i en variabel, finder du også svaret her ved at følge linket til dupe. Under alle omstændigheder er dette ikke ' t virkelig noget, jeg skal gøre alene, hvis du føler stærkt, at det skal genåbnes, skal du åbne en diskussion om Unix & Linux Meta hvor sådanne ting skal løses.
Svar
Der “det er ikke nødvendigt at gøre det, det er allerede i en variabel:
$ echo $PWD /home/terdon
PWD
variabel er defineret af POSIX og fungerer på alle POSIX-kompatible skaller:
PWD
Indstillet af skallen og af cd-hjælpeprogrammet. I skallen initialiseres værdien fra miljøet som følger. Hvis en værdi for PWD sendes til skallen i miljøet, når den udføres, er værdien et absolut sti til det aktuelle arbejdsmappe, der ikke er længere end {PATH_MAX} byte inklusive den afsluttende nulbyte, og værdien indeholder ikke alle komponenter, der er prik eller prik-prik, skal skallen indstille PWD til værdien fra miljøet. Ellers, hvis en værdi for PWD sendes til skallen i miljøet, når den udføres, er værdien et absolut stienavn for den aktuelle arbejdsmappe, og værdien indeholder ikke nogen komponenter, der er prik eller prik, så er det er uspecificeret, om skallen indstiller PWD til værdien fra miljøet eller indstiller PWD til stienavnet, der vil blive sendt af pwd -P. Ellers indstiller sh-værktøjet PWD til det stienavn, der vil blive sendt af pwd -P. I tilfælde, hvor PWD er indstillet til værdien fra miljøet, kan værdien indeholde komponenter, der henviser til filer af typen symbolsk link. I tilfælde, hvor PWD er indstillet til det stienavn, der ville blive sendt af pwd -P, er værdien af PWD, hvis der ikke er tilstrækkelig tilladelse til den aktuelle arbejdsmappe eller for en hvilken som helst forælder til denne mappe uspecificeret. Opgaver til denne variabel kan ignoreres. Hvis en applikation indstiller eller frakobler værdien af PWD, er cd- og pwd-hjælpefunktionernes adfærd ikke specificeret.
For det mere generelle svar måden at gemme output på en kommando i en variabel er at vedlægge kommandoen i $()
eller ` `
(backticks):
var=$(command)
eller
var=`command`
Af de to er $()
foretrækkes, da det er lettere at opbygge komplekse kommandoer som command0 $(command1 $(command2 $(command3)))
.
Svar
dir=$(pwd)
Dette er mere bærbart og foretrækkes frem for backticks-metoden.
Brug af $()
giver dig mulighed for at rede kommandoerne
f.eks .: mech_pwd=$(pwd; echo in $(hostname))
Kommentarer
- Faktisk, hvis noget, er backtics mere bærbare, da de går forud for
$()
-formatet.Der kan muligvis stadig være nogle maskiner, der kører skaller, der ikke ' t understøtter den nyere$()
-notation. Mens begge er defineret af POSIX, foretrækkes$()
i dag, fordi det er en renere syntaks og kan indlejres ($(command1 $(command2))
) i et langt enklere måde end backticks.
Svar
Du kan enten bruge miljøvariablen $PWD
eller skriv noget som:
dir=`pwd`
Svar
Du skal bruge kommandosubstitution for at gemme output af pwd
kommando til en variabel. Kommandosubstitution kan bruge backticks eller dollartegn. Sådan:
$ mkdir "/tmp/new dir" $ cd "/tmp/new dir" $ CWD="$(pwd)" $ echo $CWD /tmp/new dir $ cd ~ $ echo $CWD /tmp/new dir $ pwd /home/ja
Svar
Værdien af den aktuelle arbejdsmappe kan Vær forskellig. Hvis du brugte symbolske links til at hente den aktuelle mappe, vil pwd give andre resultater end / usr / bin / pwd. Da du bruger bash, vil jeg bruge:
dir=$(/usr/bin/pwd)
eller som pr. Kommentar:
dir=$(pwd -P)
da jeg ikke kan lide citater tilbage, da de ikke kan rede.
Kommentarer
- dir = $ (pwd -P) fungerer også.