Poate cineva să explice ce face acest cod?
if [ -f "saved.txt" ]; then // What does -f do?
rm saved.txt
fi
in=$(echo "{query}" | tr -d "
) // How does this work?
// What does | tr -d "
mean?
echo "$in" > saved.txt // Is this simply putting the
// value of $in into saved.txt?
Instrucțiunea inițială if va testa dacă fișierul este un fișier obișnuit. Mai multe despre operatorii de testare a fișierelor aici.
Acest script va reda caracterele {query}
și le va transmite la comanda tr
, care cu ajutorul comenzii -d
va șterge caracterele care sunt specificate. tr
reprezintă traducerea. În acest caz, se ia un SET și, conform paginii de manual, va șterge backslash-urile dacă folosiți \
.
Rezultatul este stocat în $in
.
În cele din urmă, rezultatul stocat în in
va fi afișat pe saved.text
.
NUME tr – traduce sau șterge caractere
SYNOPSIS tr [OPTION]… SET1 [SET2]
DESCRIERE Traduce, comprimă și/sau șterge caractere de la intrarea standard, scriind la ieșirea standard.
-c, -C, --complement first complement SET1 -d, --delete delete characters in SET1, do not translate -s, --squeeze-repeats replace each input sequence of a repeated character that is listed in SET1 with a single occurrence of that character -t, --truncate-set1 first truncate SET1 to length of SET2 --help display this help and exit --version output version information and exit SETs are specified as strings of characters. Most represent themselves. Interpreted sequences are: NNN character with octal value NNN (1 to 3 octal digits) \ backslash
Prima parte testează dacă saved.txt
există înainte de a încerca să îl elimine.
A doua parte copiază conținutul din query
(presupun că este o greșeală de scriere și că ar trebui să fie ${query}
, nu {query}
) în in
, minus orice backslash-uri.
A treia parte, aveți dreptate; scrie valoarea lui in
în fișierul saved.txt
.