Ce înseamnă -f într-o declarație if dintr-un script bash?

Încercând să înțeleg acest cod:

if [ -f /etc/bashrc ]; then . /etc/bashrc fi 

Nu sunt sigur ce înseamnă exact -f.

Răspuns

Pagina manuală relevantă pentru a verifica acest lucru este cea a shell-ului în sine, bash, deoarece -f este o funcționalitate pe care o oferă shell-ul, este „bash built-in.

Pe sistemul meu (CentOS 7), pagina de mana fină o acoperă. Este posibil ca grep să nu dea aceleași rezultate pentru alte distribuții. Cu toate acestea, dacă rulați man bash și apoi căutați „-f”, acesta ar trebui să ofere rezultatele dorite.

$ man bash | grep -A1 "\-f file$" -f file True if file exists and is a regular file. $ 

Răspuns

Pe scurt, bucata de cod va fi sursa /etc/bashrc dacă există, iar existența este verificată prin comanda [ la care -f este un operator / parametru.

din scriptul shell evaluează starea de ieșire a comenzilor – 0 la succes. Deci, este potrivit să faci așa ceva:

if ping -c 4 google.com; then echo "We have a connection!" fi 

Comanda, în cazul tău, este [ care este, de asemenea, cunoscut sub numele de comanda test. Deci ar fi perfect valabil să o faci

if test -f /etc/bashrc; then . /etc/bashrc fi 

The -f flag verifică două lucruri: calea furnizată există și este un fișier obișnuit. Dacă /etc/bashrc este de fapt un director sau lipsește, testul ar trebui să returneze starea de ieșire diferită de zero pentru a semnalul eșuat

Această comandă inițial era o comandă separată parte din comenzile încorporate ale shell-urilor. În zilele noastre, majoritatea shell-urilor de tip Bourne îl au încorporat și asta va folosi shell-ul.

Într-o notă laterală, /etc/bashrc pare un fișier suplimentar inutil pe care îl folosește administratorul sau autorul original al fragmentului de cod. Există /etc/bash.bashrc, care este conceput ca fișier rc la nivel de sistem pentru bash, deci ne-am aștepta ca acesta să fie folosit.

Vezi și: >

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *