Acolo „nu este nevoie să faceți asta, este deja în o variabilă:
$ echo $PWD /home/terdon
PWD
variabila este definită de POSIX și va funcționa pe toate shell-urile conforme cu POSIX:
PWD
Setat de shell și de utilitarul cd. În shell, valoarea va fi inițializată din mediul înconjurător, după cum urmează. Dacă o valoare pentru PWD este trecută la shell în mediul înconjurător atunci când este executată, valoarea este un nume de cale absolut al directorului de lucru curent care nu depășește {PATH_MAX} octeți, inclusiv octetul nul care se termină și valoarea nu conține orice componente care sunt punct sau punct, atunci shell-ul va seta PWD la valoarea din mediu. În caz contrar, dacă o valoare pentru PWD este transmisă la shell în mediul înconjurător atunci când este executată, valoarea este un nume de cale absolut al directorului de lucru curent, iar valoarea nu conține componente care sunt punct sau punct, atunci nu este specificat dacă shell-ul setează PWD la valoarea din mediu sau setează PWD la calea care ar fi ieșită de pwd -P. În caz contrar, utilitarul sh setează PWD pe calea care ar fi ieșită de pwd -P. În cazurile în care PWD este setat la valoarea din mediu, valoarea poate conține componente care se referă la fișiere de tip link simbolic. În cazurile în care PWD este setat la calea care ar fi afișată de pwd -P, dacă există permisiunea insuficientă în directorul de lucru curent sau în orice părinte al acelui director, pentru a determina care ar fi acel nume de cale, valoarea PWD este nespecificat. Alocările la această variabilă pot fi ignorate. Dacă o aplicație setează sau anulează valoarea PWD, comportamentele utilitarelor cd și pwd sunt nespecificate.
Pentru un răspuns mai general, modalitatea de a salva ieșirea unei comenzi într-o variabilă este să atașați comanda în $()
sau ` `
(backticks):
var=$(command)
sau
var=`command`
Dintre cele două, $()
este preferat, deoarece este mai ușor să construiți comenzi complexe precum command0 $(command1 $(command2 $(command3)))
.
dir=$(pwd)
Acest lucru este mai portabil și preferat decât metoda backticks.
Utilizarea $()
vă permite să cuibăriți comenzile
de exemplu: mech_pwd=$(pwd; echo in $(hostname))
Comentarii
Trebuie să utilizați substituirea comenzii pentru a salva ieșirea comenzii pwd
într-o variabilă. Înlocuirea comenzii poate utiliza backticks sau caractere în dolari. Astfel:
$ mkdir "/tmp/new dir" $ cd "/tmp/new dir" $ CWD="$(pwd)" $ echo $CWD /tmp/new dir $ cd ~ $ echo $CWD /tmp/new dir $ pwd /home/ja
Valoarea directorului de lucru curent poate fi diferit. Dacă ați folosit legături simbolice pentru a obține directorul curent, pwd va da rezultate diferite decât / usr / bin / pwd. Deoarece utilizați bash, aș folosi:
dir=$(/usr/bin/pwd)
sau după comentariu:
dir=$(pwd -P)
întrucât nu îmi plac ghilimelele din spate, deoarece nu pot face cuib.
Comentarii