τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
$
$()
ΧρήσηΕιδικές μεταβλητές του κελύφους, που χρησιμοποιούνται σε σενάρια και συναρτήσεις για τη μετάδοση παραμέτρων.
Υπάρχουν οι ακόλουθες ειδικές μεταβλητές παραμέτρων θέσης:
μεταβλητός | αποτέλεσμα |
---|---|
$0 | Λάβετε το όνομα του αρχείου σεναρίου του κελύφους και τη διαδρομή του σεναρίου |
$n | Λάβετε την nη παράμετρο του κελύφους n είναι μεταξύ 1 και 9. Εάν είναι μεγαλύτερη από 9, μερικά{} ,αρέσει{$10} |
$# | Λάβετε τον συνολικό αριθμό παραμέτρων πίσω από το εκτελεσμένο σενάριο φλοιού |
$* | Λάβετε όλες τις παραμέτρους του σεναρίου φλοιού, χωρίς εισαγωγικά, ισοδυναμεί με$@ Η συνάρτηση, συν τα εισαγωγικά "$*", είναιΛαμβάνει όλες τις παραμέτρους ως μία συμβολοσειρά |
$@ | Χωρίς εισαγωγικά, το αποτέλεσμα είναι το ίδιο με τα εισαγωγικάΛάβετε όλες τις παραμέτρους ως ανεξάρτητες συμβολοσειρές |
Μέθοδος αναζήτησης:man bash
,ΑναζήτησηSpecial Parameters
μεταβλητός | αποτέλεσμα |
---|---|
$? | Επιστρεφόμενη τιμή της τελευταίας κατάστασης εκτέλεσης εντολής, το 0 είναι σωστό, το μη-0 απέτυχε |
$$ | Ο αριθμός διεργασίας του τρέχοντος σεναρίου φλοιού |
$! | PID της τελευταίας διαδικασίας παρασκηνίου |
$_ | Λάβετε την τελευταία παράμετρο της τελευταίας εντολής |
-n
: Εξαγωγή περιεχομένου χωρίς αλλαγές γραμμής-e
: Ερμηνεύστε χαρακτήρες διαφυγής n
: νέα γραμμήr
: Εισαγωt
:αυτίb
:backspacev
: Χαρακτήρας κάθετης καρτέλαςeval ls; cd ~
exec
Μετά την εκτέλεση, αυτόματαexit
γραμματική:
γραμματική | αποτέλεσμα |
---|---|
# | Αφαιρέστε το συντομότερο ταίρι από την αρχή |
## | Αφαιρέστε το μεγαλύτερο ταίρι από την αρχή |
% | Αφαιρέστε το συντομότερο ταίρι από το τέλος |
%% | Αφαιρέστε το μεγαλύτερο ταίρι από το τέλος |
# | Υποκλοπή συγκεκριμένου περιεχομένου χαρακτήρων |
a*c | Ταιριάζει με μια συμβολοσειρά που ξεκινά με a, οποιονδήποτε αριθμό χαρακτήρων στη μέση και τελειώνει με c |
${变量} | Επιστροφή τιμής μεταβλητής |
${#变量} | Επιστροφή μεταβλητού μήκους, μήκους χαρακτήρων |
${变量:start} | Επιστρέφει τον χαρακτήρα μετά την τιμή μετατόπισης της μεταβλητής |
${变量:start:length} | Εξαγωγή χαρακτήρων περιορισμένου μήκους μετά τη μετατόπιση |
${变量#word} | Από την αρχή της μεταβλητής, διαγράψτε τη συντομότερη αντίστοιχη υποσυμβολοσειρά λέξης |
${变量##word} | Από την αρχή της μεταβλητής, διαγράψτε τη μεγαλύτερη αντίστοιχη λέξη |
${变量%word} | Αφαιρέστε τη συντομότερη αντίστοιχη υποσυμβολοσειρά λέξης από το τέλος της μεταβλητής |
${变量%%word} | Αφαιρέστε τη μεγαλύτερη υποσυμβολοσειρά λέξης που ταιριάζει από το τέλος της μεταβλητής |
${变量/pattern/string} | Αντικαταστήστε το πρώτο μοτίβο που ταιριάζει με κορδόνι |
${变量//pattern/string} | Αντικαταστήστε όλα τα μοτίβα με κορδόνι |
Παράδειγμα λειτουργίας: Διαγραφή ονόματος αρχείου
# 通过⼦串的替换⽅式
snowk@SnowKYP# f=stu_102999_1_finished.jpg
# 变量的⼦串功能,去掉后缀
snowk@SnowKYP# echo ${f//_finished/}
stu_102999_1.jpg
# 利⽤变量的反引⽤替换⽂件名
snowk@SnowKYP# mv $f `echo ${f//_finished/}`
# 剩下的⽂件,利⽤循环操作
# 找出剩下所有需要替换的jpg⽂件
snowk@SnowKYP# ls *fin*.jpg
stu_102999_2_finished.jpg stu_102999_3_finished.jpg stu_102999_4_finished.jpg
stu_102999_5_finished.jpg
# 写shell循环代码,循环操作
# 去掉所有jpg⽂件的_finished后缀
snowk@SnowKYP# for file in `ls *fin*.jpg`;do mv $file `echo ${file//_finished/}`;done
snowk@SnowKYP# ls *.jpg
stu_102999_1.jpg stu_102999_2.jpg stu_102999_3.jpg stu_102999_4.jpg stu_102999_5.jpg
parameter,参数,范围
${parameter:-word}
:ανparameter
Η τιμή της μεταβλητής είναι κενή, επιστροφήword
σειρά${parameter:=word}
:ανparameter
Η τιμή της μεταβλητής είναι κενή, λοιπόνword
Αντικαθιστά μια τιμή μεταβλητής και επιστρέφει την τιμή της${parameter:?word}
:ανparameter
Η τιμή της μεταβλητής είναι κενή,word
όπως καιstderr
Έξοδος, αλλιώς τιμή μεταβλητής εξόδου ${parameter:+word}
:ανparameter
Εάν η τιμή της μεταβλητής είναι κενή, μην κάνετε τίποτα, διαφορετικάword
ΕΠΙΣΤΡΟΦΗ# 原脚本命令,有bug,有歧义
find ${file_path} -name '*.tar.gz' -type f -mtime +7 | xargs rm -f
# 修正后的脚本命令
# 如果有bug起义,就在当前目录搜索并执行删除
find ${file_path:=/tmp} -name '*.tar.gz' -type f -mtime +7 | xargs rm -f